mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-30 22:15:20 +00:00
Don't also skip keymgr run if checkds is skipped
Checking the DS at the parent only happens if dns_zone_getdnsseckeys() returns success. However, if this function somehow fails, it can also prevent the keymgr from running. Before adding the check DS functionality, the keymgr should only run if 'dns_dnssec_findmatchingkeys()' did not return an error (either ISC_R_SUCCESS or ISC_R_NOTFOUND). After this change the correct result code is used again.
This commit is contained in:
@@ -21959,20 +21959,20 @@ zone_rekey(dns_zone_t *zone) {
|
|||||||
ISC_LIST_INIT(zone->checkds_ok);
|
ISC_LIST_INIT(zone->checkds_ok);
|
||||||
UNLOCK_ZONE(zone);
|
UNLOCK_ZONE(zone);
|
||||||
|
|
||||||
result = dns_zone_getdnsseckeys(zone, db, ver, now,
|
isc_result_t ret = dns_zone_getdnsseckeys(zone, db, ver, now,
|
||||||
&zone->checkds_ok);
|
&zone->checkds_ok);
|
||||||
|
if (ret == ISC_R_SUCCESS) {
|
||||||
if (result == ISC_R_SUCCESS) {
|
|
||||||
zone_checkds(zone);
|
zone_checkds(zone);
|
||||||
} else {
|
} else {
|
||||||
dnssec_log(zone,
|
dnssec_log(zone,
|
||||||
(result == ISC_R_NOTFOUND) ? ISC_LOG_DEBUG(1)
|
(ret == ISC_R_NOTFOUND) ? ISC_LOG_DEBUG(1)
|
||||||
: ISC_LOG_ERROR,
|
: ISC_LOG_ERROR,
|
||||||
"zone_rekey:dns_zone_getdnsseckeys failed: "
|
"zone_rekey:dns_zone_getdnsseckeys failed: "
|
||||||
"%s",
|
"%s",
|
||||||
isc_result_totext(result));
|
isc_result_totext(ret));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Run keymgr */
|
||||||
if (result == ISC_R_SUCCESS || result == ISC_R_NOTFOUND) {
|
if (result == ISC_R_SUCCESS || result == ISC_R_NOTFOUND) {
|
||||||
dns_zone_lock_keyfiles(zone);
|
dns_zone_lock_keyfiles(zone);
|
||||||
result = dns_keymgr_run(&zone->origin, zone->rdclass,
|
result = dns_keymgr_run(&zone->origin, zone->rdclass,
|
||||||
@@ -21993,6 +21993,12 @@ zone_rekey(dns_zone_t *zone) {
|
|||||||
|
|
||||||
KASP_UNLOCK(kasp);
|
KASP_UNLOCK(kasp);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Update CDS, CDNSKEY and DNSKEY record sets if the keymgr ran
|
||||||
|
* successfully (dns_keymgr_run returned ISC_R_SUCCESS), or in
|
||||||
|
* case of DNSSEC management without dnssec-policy if we have keys
|
||||||
|
* (dns_dnssec_findmatchingkeys returned ISC_R_SUCCESS).
|
||||||
|
*/
|
||||||
if (result == ISC_R_SUCCESS) {
|
if (result == ISC_R_SUCCESS) {
|
||||||
dns_kasp_digestlist_t digests;
|
dns_kasp_digestlist_t digests;
|
||||||
bool cdsdel = false;
|
bool cdsdel = false;
|
||||||
|
Reference in New Issue
Block a user