]> 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:33:09 +0000 (23:33 +0000)
committerEvan Hunt <each@isc.org>
Wed, 23 Dec 2009 23:33:09 +0000 (23:33 +0000)
[RT #19838]

CHANGES
bin/named/server.c

diff --git a/CHANGES b/CHANGES
index a1fd5c8bea11df3f4fd6cf0409e8887d0586417c..d4fba9d8c86237c31e78a6c633a5874bf40074aa 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 20d09108bc278ffcbca6bf9a5933be2498e7c718..b6b02b9727ef97abe764e61bbafc3c3dd937f2c4 100644 (file)
@@ -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.557 2009/12/23 23:33:09 each Exp $ */
 
 /*! \file */
 
@@ -6359,6 +6359,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 +6400,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,