3303. [bug] named could die when reloading. [RT #28606]

This commit is contained in:
Mark Andrews 2012-04-05 15:48:43 +10:00
parent 1c1451b617
commit bf6651e27d
3 changed files with 20 additions and 7 deletions

View file

@ -1,3 +1,5 @@
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 file

@ -5273,17 +5273,28 @@ load_zones(ns_server_t *server) {
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 {

View file

@ -266,7 +266,7 @@ load(dns_zone_t *zone, void *uap) {
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;
@ -276,7 +276,7 @@ dns_zt_asyncload(dns_zt_t *zt, dns_zt_allloaded_t alldone, void *arg) {
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) {