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:
Michał Kępień 2018-02-15 20:31:51 +01:00
parent e0205aac03
commit 749b3cacfc

View file

@ -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 */