From: Mark Andrews Date: Wed, 19 Jun 2002 07:14:48 +0000 (+0000) Subject: 1330. [bug] 'rndc stop' failed to cause zones to be flushed X-Git-Tag: v9.0.1^2~8306 X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=de4976142190ae84ed3e4099f3e0fc07781748a3;p=thirdparty%2Fbind9.git 1330. [bug] 'rndc stop' failed to cause zones to be flushed sometimes. [RT #3157] --- diff --git a/CHANGES b/CHANGES index 4d2310f3eba..2d501d673d9 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +1330. [bug] 'rndc stop' failed to cause zones to be flushed + sometimes. [RT #3157] + 1329. [func] Log that a zone transfer was covered by a TSIG. 1328. [func] DS (delegation signer) support. diff --git a/lib/dns/include/dns/view.h b/lib/dns/include/dns/view.h index e5d1e6b91e2..0a48a3a9ff0 100644 --- a/lib/dns/include/dns/view.h +++ b/lib/dns/include/dns/view.h @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: view.h,v 1.78 2002/04/26 00:40:35 marka Exp $ */ +/* $Id: view.h,v 1.79 2002/06/19 07:14:48 marka Exp $ */ #ifndef DNS_VIEW_H #define DNS_VIEW_H 1 @@ -119,6 +119,7 @@ struct dns_view { in_port_t dstport; dns_aclenv_t aclenv; dns_rdatatype_t preferred_glue; + isc_boolean_t flush; /* * Configurable data for server use only, diff --git a/lib/dns/view.c b/lib/dns/view.c index 4f2392f9d79..756e7f3eb31 100644 --- a/lib/dns/view.c +++ b/lib/dns/view.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: view.c,v 1.111 2002/04/26 00:40:32 marka Exp $ */ +/* $Id: view.c,v 1.112 2002/06/19 07:14:46 marka Exp $ */ #include @@ -161,6 +161,7 @@ dns_view_create(isc_mem_t *mctx, dns_rdataclass_t rdclass, view->maxncachettl = 3 * 3600; view->dstport = 53; view->preferred_glue = 0; + view->flush = ISC_FALSE; result = dns_order_create(view->mctx, &view->order); if (result != ISC_R_SUCCESS) @@ -312,6 +313,8 @@ view_flushanddetach(dns_view_t **viewp, isc_boolean_t flush) { view = *viewp; REQUIRE(DNS_VIEW_VALID(view)); + if (flush) + view->flush = ISC_TRUE; isc_refcount_decrement(&view->references, &refs); if (refs == 0) { LOCK(&view->lock); @@ -321,7 +324,7 @@ view_flushanddetach(dns_view_t **viewp, isc_boolean_t flush) { dns_adb_shutdown(view->adb); if (!REQSHUTDOWN(view)) dns_requestmgr_shutdown(view->requestmgr); - if (flush) + if (view->flush) dns_zt_flushanddetach(&view->zonetable); else dns_zt_detach(&view->zonetable);