From: Mark Andrews Date: Wed, 27 Dec 2017 05:24:33 +0000 (+1100) Subject: 4850. [bug] Named failed to restart with multiple added zones in X-Git-Tag: v9.13.0~321 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=9bec7facfbb839836d67190c92613524fa5ad405;p=thirdparty%2Fbind9.git 4850. [bug] Named failed to restart with multiple added zones in lmdb database. [RT #46889] --- diff --git a/CHANGES b/CHANGES index 19fcd83c63c..9b0847456b2 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +4850. [bug] Named failed to restart with multiple added zones in + lmdb database. [RT #46889] + 4849. [bug] Duplicate zones could appear in the .nzf file if addzone failed. [RT #46435] diff --git a/bin/named/server.c b/bin/named/server.c index 034246b6dd0..c749aeda047 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -7397,7 +7397,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; @@ -7425,6 +7425,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; diff --git a/bin/tests/system/addzone/tests.sh b/bin/tests/system/addzone/tests.sh index 77f12a3326f..4692abaec53 100755 --- a/bin/tests/system/addzone/tests.sh +++ b/bin/tests/system/addzone/tests.sh @@ -686,5 +686,17 @@ then status=`expr $status + $ret` fi +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