2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-30 22:15:20 +00:00

fix: dev: 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.

Closes #4786

Merge branch '4786-forced-fcount_incr-should-still-increment-count-and-allowed' into 'main'

Closes #4786

See merge request isc-projects/bind9!9115
This commit is contained in:
Ondřej Surý
2024-08-05 07:36:10 +00:00

View File

@@ -1439,8 +1439,9 @@ fcount_incr(fetchctx_t *fctx, bool force) {
REQUIRE(res != NULL); REQUIRE(res != NULL);
INSIST(fctx->counter == NULL); INSIST(fctx->counter == NULL);
/* Skip any counting if fetches-per-zone is disabled */
spill = atomic_load_acquire(&res->zspill); spill = atomic_load_acquire(&res->zspill);
if (force || spill == 0) { if (spill == 0) {
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
} }
@@ -1486,7 +1487,7 @@ fcount_incr(fetchctx_t *fctx, bool force) {
INSIST(spill > 0); INSIST(spill > 0);
LOCK(&counter->lock); LOCK(&counter->lock);
if (++counter->count > spill) { if (!force && ++counter->count > spill) {
counter->count--; counter->count--;
INSIST(counter->count > 0); INSIST(counter->count > 0);
counter->dropped++; counter->dropped++;