mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-10 20:00:00 -04:00
Evict the RRSIG when adding negative header
Formerly, we've evicted the RRSIG(type) only when we were changing existing header from positive to negative. Move the eviction routine for the RRSIG to a common path, so the RRSIG also gets evicted when we are adding new negative header for a specific type.
This commit is contained in:
parent
51af07cdee
commit
f4adabb2dd
1 changed files with 13 additions and 9 deletions
|
|
@ -2912,15 +2912,7 @@ add(qpcache_t *qpdb, qpcnode_t *qpnode, dns_slabheader_t *newheader,
|
|||
|
||||
mark_ancient(oldheader);
|
||||
|
||||
if (EXISTS(newheader) && NEGATIVE(newheader) &&
|
||||
!dns_rdatatype_issig(rdtype))
|
||||
{
|
||||
if (oldtop->related != NULL) {
|
||||
dns_slabheader_t *oldsigheader =
|
||||
first_header(oldtop->related);
|
||||
mark_ancient(oldsigheader);
|
||||
}
|
||||
}
|
||||
INSIST(oldtop->related == related);
|
||||
} else if (!EXISTS(newheader)) {
|
||||
/*
|
||||
* The type already doesn't exist; no point trying
|
||||
|
|
@ -2975,6 +2967,18 @@ add(qpcache_t *qpdb, qpcnode_t *qpnode, dns_slabheader_t *newheader,
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* We've added a proof that a rdtype doesn't exist.
|
||||
*
|
||||
* Mark the related rrsig in the cache as ancient.
|
||||
*/
|
||||
if (EXISTS(newheader) && NEGATIVE(newheader) &&
|
||||
!dns_rdatatype_issig(rdtype) && related != NULL)
|
||||
{
|
||||
dns_slabheader_t *oldsigheader = first_header(oldtop->related);
|
||||
mark_ancient(oldsigheader);
|
||||
}
|
||||
|
||||
bindrdataset(qpdb, qpnode, newheader, now, nlocktype, tlocktype,
|
||||
addedrdataset DNS__DB_FLARG_PASS);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue