]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
[master] fix 'rndc refresh' in inline-signing zones
authorEvan Hunt <each@isc.org>
Wed, 11 Dec 2013 20:59:04 +0000 (12:59 -0800)
committerEvan Hunt <each@isc.org>
Wed, 11 Dec 2013 20:59:04 +0000 (12:59 -0800)
3685. [bug] "rndc refresh" didn't work correctly with slave
zones using inline-signing. [RT #35105]

CHANGES
bin/named/server.c

diff --git a/CHANGES b/CHANGES
index 4dbf17fdc462207ae19fa3fb9242be44c90d5d85..2a46d05fd5eecad3ffaae693c026bd1ebd37e75a 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+3685.  [bug]           "rndc refresh" didn't work correctly with slave
+                       zones using inline-signing. [RT #35105]
+
 3684.  [bug]           The list of included files would grow on reload.
                        [RT 35090]
 
index 04feed7da7aa8164007396a7546f496648fc3068..9af6d38b89b6d9f49a98bc5a02070afd41624e38 100644 (file)
@@ -7103,7 +7103,7 @@ ns_server_notifycommand(ns_server_t *server, char *args, isc_buffer_t *text) {
 isc_result_t
 ns_server_refreshcommand(ns_server_t *server, char *args, isc_buffer_t *text) {
        isc_result_t result;
-       dns_zone_t *zone = NULL;
+       dns_zone_t *zone = NULL, *raw = NULL;
        const unsigned char msg1[] = "zone refresh queued";
        const unsigned char msg2[] = "not a slave or stub zone";
        dns_zonetype_t type;
@@ -7115,6 +7115,13 @@ ns_server_refreshcommand(ns_server_t *server, char *args, isc_buffer_t *text) {
        if (zone == NULL)
                return (ISC_R_UNEXPECTEDEND);
 
+       dns_zone_getraw(zone, &raw);
+       if (raw != NULL) {
+               dns_zone_detach(&zone);
+               dns_zone_attach(raw, &zone);
+               dns_zone_detach(&raw);
+       }
+
        type = dns_zone_gettype(zone);
        if (type == dns_zone_slave || type == dns_zone_stub) {
                dns_zone_refresh(zone);