Cleanup orphaned empty-non-terminal NSEC3
When OPTOUT was in use we didn't ensure that NSEC3 records for orphaned empty-non-terminals where removed. Check if there are orphaned empty-non-terminal NSEC3 even if there wasn't an NSEC3 RRset to be removed in dns_nsec3_delnsec3.
This commit is contained in:
@@ -1440,7 +1440,7 @@ dns_nsec3_delnsec3(dns_db_t *db, dns_dbversion_t *version,
|
|||||||
|
|
||||||
result = dns_dbiterator_seek(dbit, hashname);
|
result = dns_dbiterator_seek(dbit, hashname);
|
||||||
if (result == ISC_R_NOTFOUND || result == DNS_R_PARTIALMATCH) {
|
if (result == ISC_R_NOTFOUND || result == DNS_R_PARTIALMATCH) {
|
||||||
goto success;
|
goto cleanup_orphaned_ents;
|
||||||
}
|
}
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
goto failure;
|
goto failure;
|
||||||
@@ -1452,7 +1452,7 @@ dns_nsec3_delnsec3(dns_db_t *db, dns_dbversion_t *version,
|
|||||||
(isc_stdtime_t)0, &rdataset, NULL);
|
(isc_stdtime_t)0, &rdataset, NULL);
|
||||||
dns_db_detachnode(db, &node);
|
dns_db_detachnode(db, &node);
|
||||||
if (result == ISC_R_NOTFOUND) {
|
if (result == ISC_R_NOTFOUND) {
|
||||||
goto success;
|
goto cleanup_orphaned_ents;
|
||||||
}
|
}
|
||||||
if (result != ISC_R_SUCCESS) {
|
if (result != ISC_R_SUCCESS) {
|
||||||
goto failure;
|
goto failure;
|
||||||
@@ -1537,6 +1537,7 @@ dns_nsec3_delnsec3(dns_db_t *db, dns_dbversion_t *version,
|
|||||||
/*
|
/*
|
||||||
* Delete NSEC3 records for now non active nodes.
|
* Delete NSEC3 records for now non active nodes.
|
||||||
*/
|
*/
|
||||||
|
cleanup_orphaned_ents:
|
||||||
dns_name_init(&empty, NULL);
|
dns_name_init(&empty, NULL);
|
||||||
dns_name_clone(name, &empty);
|
dns_name_clone(name, &empty);
|
||||||
do {
|
do {
|
||||||
|
|||||||
Reference in New Issue
Block a user