From: Ondřej Surý Date: Thu, 20 Jun 2024 16:59:56 +0000 (+0200) Subject: Don't skip the counting if fcount_incr() is called with force==true X-Git-Tag: alessio/regression/026024a6ae^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a513d4c07f13224eccaaf355046bd41e85e11b81;p=thirdparty%2Fbind9.git 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. --- diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c index 382a4e98aa3..ef333d50cef 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++;