]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
2815. [bug] Exclusively lock the task when freezing a zone.
authorEvan Hunt <each@isc.org>
Wed, 23 Dec 2009 23:34:45 +0000 (23:34 +0000)
committerEvan Hunt <each@isc.org>
Wed, 23 Dec 2009 23:34:45 +0000 (23:34 +0000)
[RT #19838]

CHANGES
bin/named/server.c

diff --git a/CHANGES b/CHANGES
index e1185a8b25aa3a1b163db3fd94d745140af40cea..4de1a59cf85c420355194022542ea5196c407b49 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+2815.  [bug]           Exclusively lock the task when freezing a zone.
+                       [RT #19838]
+
 2814.  [func]          Provide a definitive error message when a master
                        zone is not loaded. [RT #20757]
  
index d3fdb014444ad61ada0468748f9a1df2093d90ed..a9acd24380440bab720f0a7bd4ed31ce77348b7c 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: server.c,v 1.495.10.29 2009/07/11 04:28:14 marka Exp $ */
+/* $Id: server.c,v 1.495.10.30 2009/12/23 23:34:45 each Exp $ */
 
 /*! \file */
 
@@ -5434,6 +5434,8 @@ ns_server_freeze(ns_server_t *server, isc_boolean_t freeze, char *args,
                return (ISC_R_NOTFOUND);
        }
 
+       result = isc_task_beginexclusive(server->task);
+       RUNTIME_CHECK(result == ISC_R_SUCCESS);
        frozen = dns_zone_getupdatedisabled(zone);
        if (freeze) {
                if (frozen) {
@@ -5473,6 +5475,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,