Only clear DNS_ZONEFLG_LOADPENDING in zone_asyncload() if zone loading is completed immediately
zone_load() is not always synchronous, it may only initiate an asynchronous load and return DNS_R_CONTINUE, which means zone loading has not yet been completed. In such a case, zone_asyncload() must not clear DNS_ZONEFLG_LOADPENDING immediately and leave that up to zone_postload().
This commit is contained in:
+4
-2
@@ -2189,9 +2189,11 @@ zone_asyncload(isc_task_t *task, isc_event_t *event) {
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
zone_load(zone, 0, ISC_TRUE);
|
||||
result = zone_load(zone, 0, ISC_TRUE);
|
||||
|
||||
DNS_ZONE_CLRFLAG(zone, DNS_ZONEFLG_LOADPENDING);
|
||||
if (result != DNS_R_CONTINUE) {
|
||||
DNS_ZONE_CLRFLAG(zone, DNS_ZONEFLG_LOADPENDING);
|
||||
}
|
||||
UNLOCK_ZONE(zone);
|
||||
|
||||
/* Inform the zone table we've finished loading */
|
||||
|
||||
Reference in New Issue
Block a user