From 445a354e63f84ac884d923f697b598b83288dc64 Mon Sep 17 00:00:00 2001 From: Evan Hunt Date: Wed, 11 Dec 2013 12:59:04 -0800 Subject: [PATCH] [master] fix 'rndc refresh' in inline-signing zones 3685. [bug] "rndc refresh" didn't work correctly with slave zones using inline-signing. [RT #35105] --- CHANGES | 3 +++ bin/named/server.c | 9 ++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 4dbf17fdc4..2a46d05fd5 100644 --- 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] diff --git a/bin/named/server.c b/bin/named/server.c index 04feed7da7..9af6d38b89 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -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);