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().
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 */