3311. [bug] Abort the zone dump if zone->db is NULL in
zone.c:zone_gotwritehandle. [RT #29028]
This commit is contained in:
@@ -1,3 +1,6 @@
|
||||
3311. [bug] Abort the zone dump if zone->db is NULL in
|
||||
zone.c:zone_gotwritehandle. [RT #29028]
|
||||
|
||||
3310. [test] Increase table size for mutex profiling. [RT #28809]
|
||||
|
||||
3309. [bug] resolver.c:fctx_finddone() was not threadsafe.
|
||||
|
||||
+18
-6
@@ -1676,12 +1676,16 @@ zone_gotwritehandle(isc_task_t *task, isc_event_t *event) {
|
||||
|
||||
LOCK_ZONE(zone);
|
||||
ZONEDB_LOCK(&zone->dblock, isc_rwlocktype_read);
|
||||
dns_db_currentversion(zone->db, &version);
|
||||
result = dns_master_dumpinc2(zone->mctx, zone->db, version,
|
||||
&dns_master_style_default,
|
||||
zone->masterfile, zone->task, dump_done,
|
||||
zone, &zone->dctx, zone->masterformat);
|
||||
dns_db_closeversion(zone->db, &version, ISC_FALSE);
|
||||
if (zone->db != NULL) {
|
||||
dns_db_currentversion(zone->db, &version);
|
||||
result = dns_master_dumpinc2(zone->mctx, zone->db, version,
|
||||
&dns_master_style_default,
|
||||
zone->masterfile, zone->task,
|
||||
dump_done, zone, &zone->dctx,
|
||||
zone->masterformat);
|
||||
dns_db_closeversion(zone->db, &version, ISC_FALSE);
|
||||
} else
|
||||
result = ISC_R_CANCELED;
|
||||
ZONEDB_UNLOCK(&zone->dblock, isc_rwlocktype_read);
|
||||
UNLOCK_ZONE(zone);
|
||||
if (result != DNS_R_CONTINUE)
|
||||
@@ -8531,6 +8535,14 @@ zone_unload(dns_zone_t *zone) {
|
||||
|
||||
REQUIRE(LOCKED_ZONE(zone));
|
||||
|
||||
if (!DNS_ZONE_FLAG(zone, DNS_ZONEFLG_FLUSH) ||
|
||||
!DNS_ZONE_FLAG(zone, DNS_ZONEFLG_DUMPING)) {
|
||||
if (zone->writeio != NULL)
|
||||
zonemgr_cancelio(zone->writeio);
|
||||
|
||||
if (zone->dctx != NULL)
|
||||
dns_dumpctx_cancel(zone->dctx);
|
||||
}
|
||||
ZONEDB_LOCK(&zone->dblock, isc_rwlocktype_write);
|
||||
zone_detachdb(zone);
|
||||
ZONEDB_UNLOCK(&zone->dblock, isc_rwlocktype_write);
|
||||
|
||||
Reference in New Issue
Block a user