]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
1330. [bug] 'rndc stop' failed to cause zones to be flushed
authorMark Andrews <marka@isc.org>
Wed, 19 Jun 2002 07:14:48 +0000 (07:14 +0000)
committerMark Andrews <marka@isc.org>
Wed, 19 Jun 2002 07:14:48 +0000 (07:14 +0000)
                        sometimes. [RT #3157]

CHANGES
lib/dns/include/dns/view.h
lib/dns/view.c

diff --git a/CHANGES b/CHANGES
index 4d2310f3ebaf71d2e52786c963bfa78e27369702..2d501d673d9f3b825e5aa6e7eafe13ef3637d416 100644 (file)
--- 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.
index e5d1e6b91e2c8281c4d401179d7b6dc60519da6b..0a48a3a9ff066672ff552fe027b4f8684b33a2d2 100644 (file)
@@ -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,
index 4f2392f9d797042162b89cf8b74559446696a4bf..756e7f3eb317a28d894c5f8b2ea7cf54019295cf 100644 (file)
@@ -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 <config.h>
 
@@ -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);