From a513d4c07f13224eccaaf355046bd41e85e11b81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Thu, 20 Jun 2024 18:59:56 +0200 Subject: [PATCH] Don't skip the counting if fcount_incr() is called with force==true The fcount_incr() was incorrectly skipping the accounting for the fetches-per-zone if the force argument was set to true. We want to skip the accounting only when the fetches-per-zone is completely disabled, but for individual names we need to do the accounting even if we are forcing the result to be success. --- lib/dns/resolver.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c index 382a4e98aa..ef333d50ce 100644 --- a/lib/dns/resolver.c +++ b/lib/dns/resolver.c @@ -1439,8 +1439,9 @@ fcount_incr(fetchctx_t *fctx, bool force) { REQUIRE(res != NULL); INSIST(fctx->counter == NULL); + /* Skip any counting if fetches-per-zone is disabled */ spill = atomic_load_acquire(&res->zspill); - if (force || spill == 0) { + if (spill == 0) { return (ISC_R_SUCCESS); } @@ -1486,7 +1487,7 @@ fcount_incr(fetchctx_t *fctx, bool force) { INSIST(spill > 0); LOCK(&counter->lock); - if (++counter->count > spill) { + if (!force && ++counter->count > spill) { counter->count--; INSIST(counter->count > 0); counter->dropped++;