diff options
Diffstat (limited to 'bin/named/server.c')
-rw-r--r-- | bin/named/server.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/bin/named/server.c b/bin/named/server.c index 20d09108..427b56ef 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-2003 Internet Software Consortium. * * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: server.c,v 1.556 2009/11/28 15:57:36 vjs Exp $ */ +/* $Id: server.c,v 1.556.8.6 2010/01/13 23:48:19 tbox Exp $ */ /*! \file */ @@ -4090,8 +4090,7 @@ load_configuration(const char *filename, ns_server_t *server, } /* - * Create (or recreate) the built-in views. Currently - * there is only one, the _bind view, but allow for others. + * Create (or recreate) the built-in views. */ builtin_views = NULL; RUNTIME_CHECK(cfg_map_get(ns_g_config, "view", @@ -5132,6 +5131,8 @@ zone_from_args(ns_server_t *server, char *args, dns_zone_t **zonep) { /* Partial match? */ if (result != ISC_R_SUCCESS && *zonep != NULL) dns_zone_detach(zonep); + if (result == DNS_R_PARTIALMATCH) + result = ISC_R_NOTFOUND; fail1: return (result); } @@ -6151,10 +6152,8 @@ ns_server_tsigdelete(ns_server_t *server, char *command, isc_buffer_t *text) { n = snprintf((char *)isc_buffer_used(text), isc_buffer_availablelength(text), "%d tsig keys deleted.\n", foundkeys); - if (n >= isc_buffer_availablelength(text)) { - isc_task_endexclusive(server->task); + if (n >= isc_buffer_availablelength(text)) return (ISC_R_NOSPACE); - } isc_buffer_add(text, n); return (ISC_R_SUCCESS); @@ -6270,10 +6269,8 @@ ns_server_tsiglist(ns_server_t *server, isc_buffer_t *text) { n = snprintf((char *)isc_buffer_used(text), isc_buffer_availablelength(text), "no tsig keys found.\n"); - if (n >= isc_buffer_availablelength(text)) { - isc_task_endexclusive(server->task); + if (n >= isc_buffer_availablelength(text)) return (ISC_R_NOSPACE); - } isc_buffer_add(text, n); } @@ -6304,7 +6301,7 @@ ns_server_sign(ns_server_t *server, char *args) { keyopts = dns_zone_getkeyopts(zone); if ((keyopts & DNS_ZONEKEY_ALLOW) != 0) - result = dns_zone_rekey(zone); + dns_zone_rekey(zone); else result = ISC_R_NOPERM; @@ -6359,6 +6356,8 @@ ns_server_freeze(ns_server_t *server, isc_boolean_t freeze, char *args, return (DNS_R_NOTMASTER); } + result = isc_task_beginexclusive(server->task); + RUNTIME_CHECK(result == ISC_R_SUCCESS); frozen = dns_zone_getupdatedisabled(zone); if (freeze) { if (frozen) { @@ -6398,6 +6397,7 @@ ns_server_freeze(ns_server_t *server, isc_boolean_t freeze, char *args, } } } + isc_task_endexclusive(server->task); if (msg != NULL && strlen(msg) < isc_buffer_availablelength(text)) isc_buffer_putmem(text, (const unsigned char *)msg, |