-3277. [bug] Make sure automatic key maintenance is started
+3279. [bug] Hold a internal reference to the zone while performing
+ a asynchronous load. Address potential memory leak
+ if the asynchronous is cancelled. [RT #27750]
+
+3278. [bug] Make sure automatic key maintenance is started
when "auto-dnssec maintain" is turned on during
"rndc reconfig". [RT #26805]
-3276. [bug] win32: isc_socket_dup is not implemented. [RT #27696]
+3277. [bug] win32: isc_socket_dup is not implemented. [RT #27696]
3276. [bug] win32: ns_os_openfile failed to return NULL on
safe_open failure. [RT #27696]
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: zone.c,v 1.667.2.1 2012/01/31 01:11:55 each Exp $ */
+/* $Id: zone.c,v 1.667.2.2 2012/02/07 00:52:05 marka Exp $ */
/*! \file */
isc_event_free(&event);
if (result == ISC_R_CANCELED ||
!DNS_ZONE_FLAG(zone, DNS_ZONEFLG_LOADPENDING))
- return;
+ goto cleanup;
zone_load(zone, 0);
if (asl->loaded != NULL)
(asl->loaded)(asl->loaded_arg, zone, task);
+ cleanup:
isc_mem_put(zone->mctx, asl, sizeof (*asl));
+ dns_zone_idetach(&zone);
}
isc_result_t
if (asl == NULL)
CHECK(ISC_R_NOMEMORY);
- asl->zone = zone;
+ asl->zone = NULL;
asl->loaded = done;
asl->loaded_arg = arg;
CHECK(ISC_R_NOMEMORY);
LOCK_ZONE(zone);
+ zone_iattach(zone, &asl->zone);
DNS_ZONE_SETFLAG(zone, DNS_ZONEFLG_LOADPENDING);
isc_task_send(zone->loadtask, &e);
UNLOCK_ZONE(zone);