mirror of
https://github.com/isc-projects/bind9.git
synced 2026-04-29 18:09:11 -04:00
3303. [bug] named could die when reloading. [RT #28606]
This commit is contained in:
parent
1c1451b617
commit
bf6651e27d
3 changed files with 20 additions and 7 deletions
2
CHANGES
2
CHANGES
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue