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]
+
--- 9.12.0rc1 released ---
4841. [bug] Address -fsanitize=undefined warnings. [RT #46786]
dns_zone_t *zone = NULL;
#ifndef HAVE_LMDB
FILE *fp = NULL;
+ isc_boolean_t cleanup_config = ISC_FALSE;
#else /* HAVE_LMDB */
MDB_txn *txn = NULL;
MDB_dbi dbi;
* we've created. If there was a previous one, merge the new
* zone into it.
*/
- if (cfg->nzf_config == NULL)
+ if (cfg->nzf_config == NULL) {
cfg_obj_attach(zoneconf, &cfg->nzf_config);
- else {
+ } else {
cfg_obj_t *z;
DE_CONST(zoneobj, z);
CHECK(cfg_parser_mapadd(cfg->add_parser,
cfg->nzf_config, z, "zone"));
}
+ cleanup_config = ISC_TRUE;
#endif /* HAVE_LMDB */
/*
#ifndef HAVE_LMDB
if (fp != NULL)
(void)isc_stdio_close(fp);
+ if (result != ISC_R_SUCCESS && cleanup_config) {
+ tresult = delete_zoneconf(view, cfg->add_parser,
+ cfg->nzf_config, name,
+ NULL);
+ RUNTIME_CHECK(tresult == ISC_R_SUCCESS);
+ }
#else /* HAVE_LMDB */
if (txn != NULL)
(void) nzd_close(&txn, ISC_FALSE);
--- /dev/null
+@ SOA ns3 hostmaster 0 0 0 0 0
+@ NS ns3
+ns3 A 10.53.0.3
if [ $ret != 0 ]; then echo "I:failed"; fi
status=`expr $status + $ret`
+if ! $FEATURETEST --with-lmdb
+then
+ echo "I:check that addzone is fully reversed on failure (--with-lmdb=no) ($n)"
+ ret=0
+ $RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 addzone "test1.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 "test2.baz" '{ type master; file "dne.db"; };' > /dev/null 2>&1 && ret=1
+ $RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 addzone "test3.baz" '{ type master; file "e.db"; };' > /dev/null 2>&1 || ret=1
+ $RNDC -c ../common/rndc.conf -s 10.53.0.3 -p 9953 delzone "test3.baz" > /dev/null 2>&1 || ret=1
+ grep test2.baz ns3/_default.nzf > /dev/null && ret=1
+ n=`expr $n + 1`
+ if [ $ret != 0 ]; then echo "I:failed"; fi
+ 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
fprintf(stderr, " --rpz-nsdname\n");
fprintf(stderr, " --rpz-nsip\n");
fprintf(stderr, " --with-idn\n");
+ fprintf(stderr, " --with-lmdb\n");
}
int
#endif
}
+ if (strcmp(argv[1], "--with-lmdb") == 0) {
+#ifdef HAVE_LMDB
+ return (0);
+#else
+ return (1);
+#endif
+ }
+
if (strcmp(argv[1], "--ipv6only=no") == 0) {
#ifdef WIN32
return (0);