]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Fix the fetches-per-server quota calculation
authorEvan Hunt <each@isc.org>
Thu, 5 May 2022 00:27:56 +0000 (17:27 -0700)
committerEvan Hunt <each@isc.org>
Sat, 14 May 2022 07:43:17 +0000 (00:43 -0700)
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.

(cherry picked from commit 694bc50273ddc01c571dd917415d24b42ca39de8)

lib/dns/adb.c

index a66cc2fe7d1fc12c3f1457b75606c33b0d54e706..2eef79bb47e0f9e3bbb462c0f0cc7cb0dfea6dc7 100644 (file)
@@ -4261,7 +4261,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);
@@ -4271,7 +4271,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);