From e0bd646ca8eb8698257db3063d3fe2b56b387160 Mon Sep 17 00:00:00 2001 From: Shane Kerr Date: Thu, 1 Nov 2007 13:13:24 +0000 Subject: [PATCH] Fix logging when increasing client-per-query, for BIND 9.4. See RT ticket #17236 for more. --- CHANGES | 2 ++ lib/dns/resolver.c | 15 +++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index c668a96cc9..e433e5771f 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,5 @@ +2260. [bug] Reported wrong clients-per-query when increasing the + value. [RT #17236] --- 9.4.2rc2 released --- diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c index e6986d01eb..e6264be72a 100644 --- a/lib/dns/resolver.c +++ b/lib/dns/resolver.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: resolver.c,v 1.284.18.64 2007/10/31 05:14:59 marka Exp $ */ +/* $Id: resolver.c,v 1.284.18.65 2007/11/01 13:13:24 shane Exp $ */ /*! \file */ @@ -331,7 +331,7 @@ struct dns_resolver { isc_eventlist_t whenshutdown; unsigned int activebuckets; isc_boolean_t priming; - unsigned int spillat; + unsigned int spillat; /* clients-per-query */ /* Locked by primelock. */ dns_fetch_t * primefetch; /* Locked by nlock. */ @@ -777,6 +777,9 @@ fctx_sendevents(fetchctx_t *fctx, isc_result_t result) { unsigned int count = 0; isc_interval_t i; isc_boolean_t logit = ISC_FALSE; + unsigned int old_spillat; + unsigned int new_spillat = 0; /* initialized to silence compiler + warnings */ /* * Caller must be holding the appropriate bucket lock. @@ -819,23 +822,27 @@ fctx_sendevents(fetchctx_t *fctx, isc_result_t result) { (count < fctx->res->spillatmax || fctx->res->spillatmax == 0)) { LOCK(&fctx->res->lock); if (count == fctx->res->spillat && !fctx->res->exiting) { + old_spillat = fctx->res->spillat; fctx->res->spillat += 5; if (fctx->res->spillat > fctx->res->spillatmax && fctx->res->spillatmax != 0) fctx->res->spillat = fctx->res->spillatmax; + new_spillat = fctx->res->spillat; + if (new_spillat != old_spillat) { + logit = ISC_TRUE; + } isc_interval_set(&i, 20 * 60, 0); result = isc_timer_reset(fctx->res->spillattimer, isc_timertype_ticker, NULL, &i, ISC_TRUE); RUNTIME_CHECK(result == ISC_R_SUCCESS); - logit = ISC_TRUE; } UNLOCK(&fctx->res->lock); if (logit) isc_log_write(dns_lctx, DNS_LOGCATEGORY_RESOLVER, DNS_LOGMODULE_RESOLVER, ISC_LOG_NOTICE, "clients-per-query increased to %u", - count + 1); + new_spillat); } }