mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-09-04 00:25:29 +00:00
4553. [bug] Named could deadlock there were multiple changes to
NSEC/NSEC3 parameters for a zone being processed at the same time. [RT #42770]
This commit is contained in:
4
CHANGES
4
CHANGES
@@ -1,3 +1,7 @@
|
||||
4553. [bug] Named could deadlock there were multiple changes to
|
||||
NSEC/NSEC3 parameters for a zone being processed at
|
||||
the same time. [RT #42770]
|
||||
|
||||
4552. [bug] Named could trigger a assertion when sending notify
|
||||
messages. [RT #44019]
|
||||
|
||||
|
@@ -195,6 +195,13 @@
|
||||
|
||||
<section xml:id="relnotes_bugs"><info><title>Bug Fixes</title></info>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
Named could deadlock there were multiple changes to
|
||||
NSEC/NSEC3 parameters for a zone being processed at the
|
||||
same time. [RT #42770]
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Named could trigger a assertion when sending notify
|
||||
|
@@ -9270,6 +9270,9 @@ dbiterator_first(dns_dbiterator_t *iterator) {
|
||||
|
||||
rbtdbiter->result = result;
|
||||
|
||||
if (result != ISC_R_SUCCESS)
|
||||
ENSURE(!rbtdbiter->paused);
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
||||
|
@@ -7475,6 +7475,9 @@ zone_nsec3chain(dns_zone_t *zone) {
|
||||
nsec3chain->save_delete_nsec = nsec3chain->delete_nsec;
|
||||
}
|
||||
|
||||
if (nsec3chain != NULL)
|
||||
goto skip_removals;
|
||||
|
||||
/*
|
||||
* Process removals.
|
||||
*/
|
||||
@@ -7682,6 +7685,7 @@ zone_nsec3chain(dns_zone_t *zone) {
|
||||
first = ISC_TRUE;
|
||||
}
|
||||
|
||||
skip_removals:
|
||||
/*
|
||||
* We may need to update the NSEC/NSEC3 records for the zone apex.
|
||||
*/
|
||||
@@ -7744,9 +7748,6 @@ zone_nsec3chain(dns_zone_t *zone) {
|
||||
}
|
||||
}
|
||||
|
||||
if (nsec3chain != NULL)
|
||||
dns_dbiterator_pause(nsec3chain->dbiterator);
|
||||
|
||||
/*
|
||||
* Add / update signatures for the NSEC3 records.
|
||||
*/
|
||||
@@ -8460,6 +8461,14 @@ zone_sign(dns_zone_t *zone) {
|
||||
}
|
||||
|
||||
failure:
|
||||
/*
|
||||
* Pause all dbiterators.
|
||||
*/
|
||||
for (signing = ISC_LIST_HEAD(zone->signing);
|
||||
signing != NULL;
|
||||
signing = ISC_LIST_NEXT(signing, link))
|
||||
dns_dbiterator_pause(signing->dbiterator);
|
||||
|
||||
/*
|
||||
* Rollback the cleanup list.
|
||||
*/
|
||||
@@ -8472,11 +8481,6 @@ zone_sign(dns_zone_t *zone) {
|
||||
signing = ISC_LIST_HEAD(cleanup);
|
||||
}
|
||||
|
||||
for (signing = ISC_LIST_HEAD(zone->signing);
|
||||
signing != NULL;
|
||||
signing = ISC_LIST_NEXT(signing, link))
|
||||
dns_dbiterator_pause(signing->dbiterator);
|
||||
|
||||
dns_diff_clear(&_sig_diff);
|
||||
|
||||
for (i = 0; i < nkeys; i++)
|
||||
|
Reference in New Issue
Block a user