mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-09-01 06:55:30 +00:00
Add more zone locks
Add more zone locks around code that touches zone timer setting in failure modes.
This commit is contained in:
committed by
Mark Andrews
parent
7212961849
commit
143d1c9767
@@ -7167,12 +7167,12 @@ failure:
|
|||||||
} else if (db != NULL) {
|
} else if (db != NULL) {
|
||||||
dns_db_detach(&db);
|
dns_db_detach(&db);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LOCK_ZONE(zone);
|
||||||
if (result == ISC_R_SUCCESS) {
|
if (result == ISC_R_SUCCESS) {
|
||||||
LOCK_ZONE(zone);
|
|
||||||
set_resigntime(zone);
|
set_resigntime(zone);
|
||||||
zone_needdump(zone, DNS_DUMP_DELAY);
|
zone_needdump(zone, DNS_DUMP_DELAY);
|
||||||
DNS_ZONE_SETFLAG(zone, DNS_ZONEFLG_NEEDNOTIFY);
|
DNS_ZONE_SETFLAG(zone, DNS_ZONEFLG_NEEDNOTIFY);
|
||||||
UNLOCK_ZONE(zone);
|
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
* Something failed. Retry in 5 minutes.
|
* Something failed. Retry in 5 minutes.
|
||||||
@@ -7181,6 +7181,7 @@ failure:
|
|||||||
isc_interval_set(&ival, 300, 0);
|
isc_interval_set(&ival, 300, 0);
|
||||||
isc_time_nowplusinterval(&zone->resigntime, &ival);
|
isc_time_nowplusinterval(&zone->resigntime, &ival);
|
||||||
}
|
}
|
||||||
|
UNLOCK_ZONE(zone);
|
||||||
|
|
||||||
INSIST(version == NULL);
|
INSIST(version == NULL);
|
||||||
}
|
}
|
||||||
@@ -9679,6 +9680,7 @@ cleanup:
|
|||||||
dns_db_detach(&db);
|
dns_db_detach(&db);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LOCK_ZONE(zone);
|
||||||
if (ISC_LIST_HEAD(zone->signing) != NULL) {
|
if (ISC_LIST_HEAD(zone->signing) != NULL) {
|
||||||
isc_interval_t interval;
|
isc_interval_t interval;
|
||||||
if (zone->update_disabled || result != ISC_R_SUCCESS) {
|
if (zone->update_disabled || result != ISC_R_SUCCESS) {
|
||||||
@@ -9690,6 +9692,7 @@ cleanup:
|
|||||||
} else {
|
} else {
|
||||||
isc_time_settoepoch(&zone->signingtime);
|
isc_time_settoepoch(&zone->signingtime);
|
||||||
}
|
}
|
||||||
|
UNLOCK_ZONE(zone);
|
||||||
|
|
||||||
INSIST(version == NULL);
|
INSIST(version == NULL);
|
||||||
}
|
}
|
||||||
@@ -19692,6 +19695,7 @@ zone_rekey(dns_zone_t *zone) {
|
|||||||
result = ISC_R_SUCCESS;
|
result = ISC_R_SUCCESS;
|
||||||
|
|
||||||
failure:
|
failure:
|
||||||
|
LOCK_ZONE(zone);
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
/*
|
/*
|
||||||
* Something went wrong; try again in ten minutes or
|
* Something went wrong; try again in ten minutes or
|
||||||
@@ -19701,6 +19705,7 @@ failure:
|
|||||||
0);
|
0);
|
||||||
isc_time_nowplusinterval(&zone->refreshkeytime, &ival);
|
isc_time_nowplusinterval(&zone->refreshkeytime, &ival);
|
||||||
}
|
}
|
||||||
|
UNLOCK_ZONE(zone);
|
||||||
|
|
||||||
dns_diff_clear(&diff);
|
dns_diff_clear(&diff);
|
||||||
dns_diff_clear(&_sig_diff);
|
dns_diff_clear(&_sig_diff);
|
||||||
|
Reference in New Issue
Block a user