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:
Ondřej Surý 2025-11-08 12:06:20 +01:00
parent 51af07cdee
commit f4adabb2dd
No known key found for this signature in database
GPG key ID: 2820F37E873DEA41

View file

@ -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);