]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
[master] fix to change #3647
authorEvan Hunt <each@isc.org>
Fri, 13 Sep 2013 16:52:15 +0000 (09:52 -0700)
committerEvan Hunt <each@isc.org>
Fri, 13 Sep 2013 16:52:15 +0000 (09:52 -0700)
lib/dns/zone.c

index 0f632a05b4734591272fcc55932951572e0f211b..bc33cacfc9317b1ecfda7ee84ea80fe0dbc3792e 100644 (file)
@@ -4475,12 +4475,9 @@ zone_postload(dns_zone_t *zone, dns_db_t *db, isc_time_t loadtime,
 
 static isc_boolean_t
 exit_check(dns_zone_t *zone) {
-
        REQUIRE(LOCKED_ZONE(zone));
 
-       if (DNS_ZONE_FLAG(zone, DNS_ZONEFLG_SHUTDOWN) &&
-           zone->irefs == 0)
-       {
+       if (DNS_ZONE_FLAG(zone, DNS_ZONEFLG_SHUTDOWN) && zone->irefs == 0) {
                /*
                 * DNS_ZONEFLG_SHUTDOWN can only be set if erefs == 0.
                 */
@@ -11752,7 +11749,6 @@ zone_shutdown(isc_task_t *task, isc_event_t *event) {
                        zone->statelist = NULL;
                }
                RWUNLOCK(&zone->zmgr->rwlock, isc_rwlocktype_write);
-               dns_zonemgr_releasezone(zone->zmgr, zone);
        }
 
        /*
@@ -11761,6 +11757,10 @@ zone_shutdown(isc_task_t *task, isc_event_t *event) {
        if (zone->xfr != NULL)
                dns_xfrin_shutdown(zone->xfr);
 
+       /* Safe to release the zone now */
+       if (zone->zmgr != NULL)
+               dns_zonemgr_releasezone(zone->zmgr, zone);
+
        LOCK_ZONE(zone);
        INSIST(zone != zone->raw);
        if (linked) {