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.
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);
}
INSIST(spill > 0);
LOCK(&counter->lock);
- if (++counter->count > spill) {
+ if (!force && ++counter->count > spill) {
counter->count--;
INSIST(counter->count > 0);
counter->dropped++;