]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
4850. [bug] Named failed to restart with multiple added zones in
authorMark Andrews <marka@isc.org>
Wed, 27 Dec 2017 05:24:33 +0000 (16:24 +1100)
committerMark Andrews <marka@isc.org>
Wed, 3 Jan 2018 22:35:18 +0000 (09:35 +1100)
                        lmdb database. [RT #46889]

(cherry picked from commit 9bec7facfbb839836d67190c92613524fa5ad405)

CHANGES
bin/named/server.c
bin/tests/system/addzone/tests.sh

diff --git a/CHANGES b/CHANGES
index 86de8b655a1437a41f088c99f523fb4d4888ad2c..46a429d3ede98b1508f690f5a97da7414c67e2c8 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,8 @@
        --- 9.12.0 released ---
 
+4850.  [bug]           Named failed to restart with multiple added zones in
+                       lmdb database. [RT #46889]
+
        --- 9.12.0rc1 released ---
 
 4841.  [bug]           Address -fsanitize=undefined warnings. [RT #46786]
index a4e904bc5b14a99b635f3269d97792257fe65e01..b557c8eca7da918ccbfbd2b73c986dc5f6b7d2c9 100644 (file)
@@ -7395,7 +7395,7 @@ for_all_newzone_cfgs(newzone_cfg_cb_t callback, cfg_obj_t *config,
                     cfg_obj_t *vconfig, isc_mem_t *mctx, dns_view_t *view,
                     cfg_aclconfctx_t *actx, MDB_txn *txn, MDB_dbi dbi)
 {
-       const cfg_obj_t *zconfig, *zlist = NULL;
+       const cfg_obj_t *zconfig, *zlist;
        isc_result_t result = ISC_R_SUCCESS;
        cfg_obj_t *zconfigobj = NULL;
        isc_buffer_t *text = NULL;
@@ -7423,6 +7423,7 @@ for_all_newzone_cfgs(newzone_cfg_cb_t callback, cfg_obj_t *config,
                /*
                 * Extract zone configuration from configuration object.
                 */
+               zlist = NULL;
                result = cfg_map_get(zconfigobj, "zone", &zlist);
                if (result != ISC_R_SUCCESS) {
                        break;
index fe14f9e3b3f2cb355a9dd2cefbb5fb392ef8fe36..ea5ed479954e7ca2048360646f388e195d80c8a6 100755 (executable)
@@ -672,5 +672,17 @@ n=`expr $n + 1`
 if [ $ret != 0 ]; then echo "I:failed"; fi
 status=`expr $status + $ret`
 
+echo "I:check that named restarts with multiple added zones ($n)"
+ret=0
+$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 addzone "test4.baz" '{ type master; file "e.db"; };' > /dev/null 2>&1 || ret=1
+$RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 addzone "test5.baz" '{ type master; file "e.db"; };' > /dev/null 2>&1 || ret=1
+$PERL $SYSTEMTESTTOP/stop.pl . ns3
+$PERL $SYSTEMTESTTOP/start.pl --noclean --restart . ns3 || ret=1
+$DIG -p 5300 @10.53.0.3 version.bind txt ch > dig.out.test$n || ret=1
+grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
+n=`expr $n + 1`
+if [ $ret != 0 ]; then echo "I:failed"; fi
+status=`expr $status + $ret`
+
 echo "I:exit status: $status"
 [ $status -eq 0 ] || exit 1