]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Store zone config also on modzone
authorMatthijs Mekking <matthijs@isc.org>
Tue, 17 Mar 2026 08:29:10 +0000 (09:29 +0100)
committerMatthijs Mekking <matthijs@isc.org>
Tue, 17 Mar 2026 09:51:18 +0000 (09:51 +0000)
'rndc modzone' deletes the old configuration. If we don't store the
new zone config, when we do a 'rndc showzone' it will be a failure.

This is not an issue in the 9.21 version, because of the effective
config behavior.

bin/named/server.c

index 09cf436627aee574cb63297815e9794ea00d060e..37d4ba92e8036adcd586fdb88af4325b067583bb 100644 (file)
@@ -14298,6 +14298,18 @@ do_modzone(named_server_t *server, ns_cfgctx_t *cfg, dns_view_t *view,
                TCHECK(putstr(text, zname));
                TCHECK(putstr(text, "' reconfigured."));
        } else {
+#ifdef HAVE_LMDB
+               CHECK(nzd_open(view, 0, &txn, &dbi));
+               CHECK(nzd_save(&txn, dbi, zone, zoneobj));
+#else  /* ifdef HAVE_LMDB */
+               result = nzf_append(view, zoneobj);
+               if (result != ISC_R_SUCCESS) {
+                       TCHECK(putstr(text, "\nNew zone config not saved: "));
+                       TCHECK(putstr(text, isc_result_totext(result)));
+                       goto cleanup;
+               }
+#endif /* HAVE_LMDB */
+
                TCHECK(putstr(text, "zone '"));
                TCHECK(putstr(text, zname));
                TCHECK(putstr(text, "' must also be reconfigured in\n"));