From: Mark Andrews Date: Wed, 24 May 2006 04:30:43 +0000 (+0000) Subject: 2031. [bug] Emit a error message when "rndc refresh" is called on X-Git-Tag: v9.4.0a6~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a3f85746be03b301e6888795bae9bd2dbdbe94b0;p=thirdparty%2Fbind9.git 2031. [bug] Emit a error message when "rndc refresh" is called on a non slave/stub zone. [RT # 16073] --- diff --git a/CHANGES b/CHANGES index ae0819e5db7..6e2bb40b646 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +2031. [bug] Emit a error message when "rndc refresh" is called on + a non slave/stub zone. [RT # 16073] + 2030. [bug] We were being overly conservative when disabling openssl engine support. [RT #16030] diff --git a/bin/named/server.c b/bin/named/server.c index 3684ce5a06f..65efb3e2149 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: server.c,v 1.419.18.46 2006/05/18 02:02:35 marka Exp $ */ +/* $Id: server.c,v 1.419.18.47 2006/05/24 04:30:43 marka Exp $ */ /*! \file */ @@ -4021,20 +4021,29 @@ 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; - const unsigned char msg[] = "zone refresh queued"; + const unsigned char msg1[] = "zone refresh queued"; + const unsigned char msg2[] = "not a slave or stub zone"; + dns_zonetype_t type; result = zone_from_args(server, args, &zone); if (result != ISC_R_SUCCESS) return (result); if (zone == NULL) return (ISC_R_UNEXPECTEDEND); - - dns_zone_refresh(zone); - dns_zone_detach(&zone); - if (sizeof(msg) <= isc_buffer_availablelength(text)) - isc_buffer_putmem(text, msg, sizeof(msg)); - return (ISC_R_SUCCESS); + type = dns_zone_gettype(zone); + if (type == dns_zone_slave || type == dns_zone_stub) { + dns_zone_refresh(zone); + dns_zone_detach(&zone); + if (sizeof(msg1) <= isc_buffer_availablelength(text)) + isc_buffer_putmem(text, msg1, sizeof(msg1)); + return (ISC_R_SUCCESS); + } + + dns_zone_detach(&zone); + if (sizeof(msg2) <= isc_buffer_availablelength(text)) + isc_buffer_putmem(text, msg2, sizeof(msg2)); + return (ISC_R_FAILURE); } isc_result_t