+3303. [bug] named could die when reloading. [RT #28606]
+
3302. [bug] dns_dnssec_findmatchingkeys could fail to find
keys if the zone name contained character that
required special mappings. [RT #28600]
view != NULL;
view = ISC_LIST_NEXT(view, link))
{
- if (view->managed_keys != NULL)
- CHECK(dns_zone_load(view->managed_keys));
- if (view->redirect != NULL)
- CHECK(dns_zone_load(view->redirect));
+ if (view->managed_keys != NULL) {
+ result = dns_zone_load(view->managed_keys);
+ if (result != ISC_R_SUCCESS && result != DNS_R_UPTODATE)
+ goto cleanup;
+ }
+ if (view->redirect != NULL) {
+ result = dns_zone_load(view->redirect);
+ if (result != ISC_R_SUCCESS && result != DNS_R_UPTODATE)
+ goto cleanup;
+ }
+
+ /*
+ * 'dns_view_asyncload' calls view_loaded if there are no
+ * zones.
+ */
isc_refcount_increment(&zl->refs, NULL);
CHECK(dns_view_asyncload(view, view_loaded, zl));
}
cleanup:
isc_refcount_decrement(&zl->refs, &refs);
- if (result != ISC_R_SUCCESS || refs == 0) {
+ if (refs == 0) {
isc_refcount_destroy(&zl->refs);
isc_mem_put(server->mctx, zl, sizeof (*zl));
} else {
isc_result_t
dns_zt_asyncload(dns_zt_t *zt, dns_zt_allloaded_t alldone, void *arg) {
- isc_result_t result, tresult;
+ isc_result_t result;
static dns_zt_zoneloaded_t dl = doneloading;
int pending;
INSIST(zt->loads_pending == 0);
- result = dns_zt_apply2(zt, ISC_FALSE, &tresult, asyncload, &dl);
+ result = dns_zt_apply2(zt, ISC_FALSE, NULL, asyncload, &dl);
pending = zt->loads_pending;
if (pending != 0) {