mirror of
https://github.com/isc-projects/bind9.git
synced 2026-02-24 02:10:30 -05: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:
parent
42924b40af
commit
d2e1b47d4f
4 changed files with 26 additions and 8 deletions
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++)
|
||||
|
|
|
|||
Loading…
Reference in a new issue