mirror of
https://github.com/isc-projects/bind9.git
synced 2026-05-27 12:13:20 -04:00
Fix a logic error in cache_name()
A change in6aba56ae8(checking whether a rejected RRset was identical to the data it would have replaced, so that we could still cache a signature) inadvertently introduced cases where processing of a response would continue when previously it would have been skipped. (cherry picked from commitd0fd9cbe3b)
This commit is contained in:
parent
54bb8252e2
commit
9bec99ce7d
1 changed files with 14 additions and 13 deletions
|
|
@ -6590,7 +6590,8 @@ cache_name(fetchctx_t *fctx, dns_name_t *name, dns_message_t *message,
|
|||
if (result == DNS_R_UNCHANGED) {
|
||||
result = ISC_R_SUCCESS;
|
||||
if (!need_validation &&
|
||||
ardataset != NULL)
|
||||
ardataset != NULL &&
|
||||
NEGATIVE(ardataset))
|
||||
{
|
||||
/*
|
||||
* The answer in the
|
||||
|
|
@ -6604,12 +6605,17 @@ cache_name(fetchctx_t *fctx, dns_name_t *name, dns_message_t *message,
|
|||
if (NXDOMAIN(ardataset)) {
|
||||
eresult =
|
||||
DNS_R_NCACHENXDOMAIN;
|
||||
} else if (NEGATIVE(ardataset))
|
||||
{
|
||||
} else {
|
||||
eresult =
|
||||
DNS_R_NCACHENXRRSET;
|
||||
}
|
||||
|
||||
continue;
|
||||
} else if (!need_validation &&
|
||||
ardataset != NULL &&
|
||||
sigrdataset != NULL &&
|
||||
!dns_rdataset_equals(
|
||||
rdataset, ardataset))
|
||||
{
|
||||
/*
|
||||
* The cache wasn't updated
|
||||
* because something was
|
||||
|
|
@ -6617,16 +6623,11 @@ cache_name(fetchctx_t *fctx, dns_name_t *name, dns_message_t *message,
|
|||
* data was the same as what
|
||||
* we were trying to add,
|
||||
* then sigrdataset might
|
||||
* still be useful. If
|
||||
* not, move on.
|
||||
* still be useful, and we
|
||||
* should carry on caching
|
||||
* it. Otherwise, move on.
|
||||
*/
|
||||
if (sigrdataset != NULL &&
|
||||
!dns_rdataset_equals(
|
||||
rdataset,
|
||||
addedrdataset))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue