]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
rndc reconfig reports configuration errors the same way rndc reload does [RT #39635]
authorWitold Krecicki <wpk@isc.org>
Fri, 12 Jun 2015 08:19:29 +0000 (10:19 +0200)
committerWitold Krecicki <wpk@isc.org>
Fri, 12 Jun 2015 08:19:29 +0000 (10:19 +0200)
CHANGES
bin/named/control.c
bin/named/include/named/server.h
bin/named/server.c
bin/tests/system/rndc/tests.sh

diff --git a/CHANGES b/CHANGES
index b4843d903a94adfe2b44acea7eaad0579adf271c..f252c3a0f62d63c625434075b7cce00b56380f84 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+4137.  [cleanup]       rndc reconfig reports configuration errors the same
+                       way rndc reload does [RT #39635]
+
 4136.  [bug]           Stale statistics counters with the leading
                        '#' prefix (such as #NXDOMAIN) were not being
                        updated correctly. This has been fixed. [RT #39141]
index d14b425a59f8a800ed835df5049a3f23a7d70f7d..aaf9dd42eaad6148b30329894f20d5ffc1052848 100644 (file)
@@ -101,7 +101,7 @@ ns_control_docommand(isccc_sexpr_t *message, isc_buffer_t **text) {
        if (command_compare(command, NS_COMMAND_RELOAD)) {
                result = ns_server_reloadcommand(ns_g_server, command, text);
        } else if (command_compare(command, NS_COMMAND_RECONFIG)) {
-               result = ns_server_reconfigcommand(ns_g_server, command);
+               result = ns_server_reconfigcommand(ns_g_server);
        } else if (command_compare(command, NS_COMMAND_REFRESH)) {
                result = ns_server_refreshcommand(ns_g_server, command, text);
        } else if (command_compare(command, NS_COMMAND_RETRANSFER)) {
index c4a8cea80c20639f551c2f14051eb88addc74563..b19055d62dba5a087a87941bff3e4c1d99b50f92 100644 (file)
@@ -244,7 +244,7 @@ ns_server_reloadcommand(ns_server_t *server, char *args, isc_buffer_t **text);
  */
 
 isc_result_t
-ns_server_reconfigcommand(ns_server_t *server, char *args);
+ns_server_reconfigcommand(ns_server_t *server);
 /*%<
  * Act on a "reconfig" command from the command channel.
  */
index d199fd21139f6ace457dd1bf55bc40d67cde4ae7..39f00e6cb5177a19b576b7c7bbf404e9755b4601 100644 (file)
@@ -7200,25 +7200,6 @@ reload(ns_server_t *server) {
        return (result);
 }
 
-static void
-reconfig(ns_server_t *server) {
-       isc_result_t result;
-       CHECK(loadconfig(server));
-
-       result = load_new_zones(server, ISC_FALSE);
-       if (result == ISC_R_SUCCESS)
-               isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
-                             NS_LOGMODULE_SERVER, ISC_LOG_INFO,
-                             "any newly configured zones are now loaded");
-       else
-               isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
-                             NS_LOGMODULE_SERVER, ISC_LOG_ERROR,
-                             "loading new zones failed: %s",
-                             isc_result_totext(result));
-
- cleanup: ;
-}
-
 /*
  * Handle a reload event (from SIGHUP).
  */
@@ -7476,11 +7457,23 @@ ns_server_reloadcommand(ns_server_t *server, char *args, isc_buffer_t **text) {
  * Act on a "reconfig" command from the command channel.
  */
 isc_result_t
-ns_server_reconfigcommand(ns_server_t *server, char *args) {
-       UNUSED(args);
+ns_server_reconfigcommand(ns_server_t *server) {
+       isc_result_t result;
 
-       reconfig(server);
-       return (ISC_R_SUCCESS);
+       CHECK(loadconfig(server));
+
+       result = load_new_zones(server, ISC_FALSE);
+       if (result == ISC_R_SUCCESS)
+               isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
+                             NS_LOGMODULE_SERVER, ISC_LOG_INFO,
+                             "any newly configured zones are now loaded");
+       else
+               isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,
+                             NS_LOGMODULE_SERVER, ISC_LOG_ERROR,
+                             "loading new zones failed: %s",
+                             isc_result_totext(result));
+cleanup:
+       return (result);
 }
 
 /*
index e75c0c29179c1ae825d5c68031095e4ddf0f8ac7..cc3ad4eac89ba7db7d39590a021ad4ad4fa9a15e 100644 (file)
@@ -411,4 +411,19 @@ grep "ISC_R_SUCCESS 0" rndc.output > /dev/null || ret=1
 if [ $ret != 0 ]; then echo "I:failed"; fi
 status=`expr $status + $ret`
 
+echo "I:test 'rndc reconfig' with a broken config"
+ret=0
+$RNDC -s 10.53.0.4 -p 9956 -c ns4/key6.conf reconfig > /dev/null || ret=1
+sleep 1
+mv ns4/named.conf ns4/named.conf.save
+echo "error error error" >> ns4/named.conf
+$RNDC -s 10.53.0.4 -p 9956 -c ns4/key6.conf reconfig > rndc.output 2>&1 && ret=1
+grep "rndc: 'reconfig' failed: unexpected token" rndc.output > /dev/null || ret=1
+mv ns4/named.conf.save ns4/named.conf
+sleep 1
+$RNDC -s 10.53.0.4 -p 9956 -c ns4/key6.conf reconfig > /dev/null || ret=1
+sleep 1
+if [ $ret != 0 ]; then echo "I:failed"; fi
+status=`expr $status + $ret`
+
 exit $status