From: Evan Hunt Date: Thu, 5 May 2022 00:27:56 +0000 (-0700) Subject: Fix the fetches-per-server quota calculation X-Git-Tag: v9.19.2~34^2~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=694bc50273ddc01c571dd917415d24b42ca39de8;p=thirdparty%2Fbind9.git Fix the fetches-per-server quota calculation Since commit bad5a523c2e, when the fetches-per-server quota was increased or decreased, instead of the value being set to the newly calculated quota, it was set to the *minimum* of the new quota or 1 - which effectively meant it was always set to 1. it should instead have been the maximum, to prevent the value from ever dropping to zero. --- diff --git a/lib/dns/adb.c b/lib/dns/adb.c index 2cf2e85dcdf..5c5d1d714ee 100644 --- a/lib/dns/adb.c +++ b/lib/dns/adb.c @@ -3565,7 +3565,7 @@ maybe_adjust_quota(dns_adb_t *adb, dns_adbaddrinfo_t *addr, bool timeout) { uint_fast32_t new_quota = adb->quota * quota_adj[--addr->entry->mode] / 10000; atomic_store_release(&addr->entry->quota, - ISC_MIN(1, new_quota)); + ISC_MAX(1, new_quota)); log_quota(addr->entry, "atr %0.2f, quota increased to %" PRIuFAST32, addr->entry->atr, new_quota); @@ -3575,7 +3575,7 @@ maybe_adjust_quota(dns_adb_t *adb, dns_adbaddrinfo_t *addr, bool timeout) { uint_fast32_t new_quota = adb->quota * quota_adj[++addr->entry->mode] / 10000; atomic_store_release(&addr->entry->quota, - ISC_MIN(1, new_quota)); + ISC_MAX(1, new_quota)); log_quota(addr->entry, "atr %0.2f, quota decreased to %" PRIuFAST32, addr->entry->atr, new_quota);