]> 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 04:47:27 +0000 (21:47 -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.

lib/dns/adb.c

index 2cf2e85dcdfda4c5624bcb5c8f7e1ff67021e135..5c5d1d714eebb751411ad1b00c679f4eb21f19cf 100644 (file)
@@ -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);