]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
pullup:
authorAndreas Gustafsson <source@isc.org>
Mon, 21 May 2001 17:50:00 +0000 (17:50 +0000)
committerAndreas Gustafsson <source@isc.org>
Mon, 21 May 2001 17:50:00 +0000 (17:50 +0000)
 734.   [bug]           An attempt to re-lock the zone lock could occur if
                        the server was shutdown during a zone tranfer.
                        [RT #830]

CHANGES
lib/dns/zone.c

diff --git a/CHANGES b/CHANGES
index cca314879d455960c8ee699810ff4a617fc7fe8f..9eed2b6990d782bc1d42fa528556b582892aee56 100644 (file)
--- a/CHANGES
+++ b/CHANGES
  771.  [cleanup]       TSIG errors related to unsynchronized clocks
                        are logged better. [RT #919]
 
+ 734.  [bug]           An attempt to re-lock the zone lock could occur if
+                       the server was shutdown during a zone tranfer.
+                       [RT #830]
+
  669.  [bug]           dnssec-keygen now makes the public key file
                        non-world-readable for symmetric keys. [RT #403]
 
index d223a79f0623f956fee9f7c361434f5107f5fcf1..a9a5e2e5b190f1ad9d26121e973cc195a3c18915 100644 (file)
@@ -15,7 +15,7 @@
  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: zone.c,v 1.283.2.12 2001/05/14 23:50:49 gson Exp $ */
+/* $Id: zone.c,v 1.283.2.13 2001/05/21 17:50:00 gson Exp $ */
 
 #include <config.h>
 
@@ -175,7 +175,7 @@ struct dns_zone {
        isc_sockaddr_t          notifysrc6;
        isc_sockaddr_t          xfrsource4;
        isc_sockaddr_t          xfrsource6;
-       dns_xfrin_ctx_t         *xfr;
+       dns_xfrin_ctx_t         *xfr;           /* task locked */
        /* Access Control Lists */
        dns_acl_t               *update_acl;
        dns_acl_t               *forward_acl;
@@ -3610,10 +3610,13 @@ zone_shutdown(isc_task_t *task, isc_event_t *event) {
        RWUNLOCK(&zone->zmgr->rwlock, isc_rwlocktype_write);
 
 
-       LOCK_ZONE(zone);
+       /*
+        * In task context, no locking required.  See zone_xfrdone().
+        */
        if (zone->xfr != NULL)
                dns_xfrin_shutdown(zone->xfr);
 
+       LOCK_ZONE(zone);
        if (zone->request != NULL) {
                dns_request_cancel(zone->request);
        }