mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-31 14:35:26 +00:00
2079. [bug] The lame cache was not handling multiple types
correctly. [RT #16361]
This commit is contained in:
3
CHANGES
3
CHANGES
@@ -1,3 +1,6 @@
|
|||||||
|
2079. [bug] The lame cache was not handling multiple types
|
||||||
|
correctly. [RT #16361]
|
||||||
|
|
||||||
2078. [bug] dnssec-checkzone output style "default" was badly
|
2078. [bug] dnssec-checkzone output style "default" was badly
|
||||||
named. It is now called "relative". [RT #16326]
|
named. It is now called "relative". [RT #16326]
|
||||||
|
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
* PERFORMANCE OF THIS SOFTWARE.
|
* PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: adb.c,v 1.226 2005/11/30 03:33:48 marka Exp $ */
|
/* $Id: adb.c,v 1.227 2006/08/30 23:09:18 marka Exp $ */
|
||||||
|
|
||||||
/*! \file
|
/*! \file
|
||||||
*
|
*
|
||||||
@@ -1675,12 +1675,13 @@ entry_is_lame(dns_adb_t *adb, dns_adbentry_t *entry, dns_name_t *qname,
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Order tests from least to most expensive.
|
* Order tests from least to most expensive.
|
||||||
|
*
|
||||||
|
* We do not break out of the main loop here as
|
||||||
|
* we use the loop for house keeping.
|
||||||
*/
|
*/
|
||||||
if (li != NULL && !is_bad) {
|
if (li != NULL && !is_bad && li->qtype == qtype &&
|
||||||
if (li->qtype == qtype &&
|
dns_name_equal(qname, &li->qname))
|
||||||
dns_name_equal(qname, &li->qname))
|
is_bad = ISC_TRUE;
|
||||||
is_bad = ISC_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
li = next_li;
|
li = next_li;
|
||||||
}
|
}
|
||||||
@@ -3356,8 +3357,8 @@ dns_adb_marklame(dns_adb_t *adb, dns_adbaddrinfo_t *addr, dns_name_t *qname,
|
|||||||
bucket = addr->entry->lock_bucket;
|
bucket = addr->entry->lock_bucket;
|
||||||
LOCK(&adb->entrylocks[bucket]);
|
LOCK(&adb->entrylocks[bucket]);
|
||||||
li = ISC_LIST_HEAD(addr->entry->lameinfo);
|
li = ISC_LIST_HEAD(addr->entry->lameinfo);
|
||||||
while (li != NULL && li->qtype != qtype &&
|
while (li != NULL &&
|
||||||
!dns_name_equal(qname, &li->qname))
|
(li->qtype != qtype || !dns_name_equal(qname, &li->qname)))
|
||||||
li = ISC_LIST_NEXT(li, plink);
|
li = ISC_LIST_NEXT(li, plink);
|
||||||
if (li != NULL) {
|
if (li != NULL) {
|
||||||
if (expire_time > li->lame_timer)
|
if (expire_time > li->lame_timer)
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
* PERFORMANCE OF THIS SOFTWARE.
|
* PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: resolver.c,v 1.333 2006/08/22 06:11:19 marka Exp $ */
|
/* $Id: resolver.c,v 1.334 2006/08/30 23:09:18 marka Exp $ */
|
||||||
|
|
||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
@@ -5593,7 +5593,7 @@ resquery_response(isc_task_t *task, isc_event_t *event) {
|
|||||||
is_lame(fctx)) {
|
is_lame(fctx)) {
|
||||||
log_lame(fctx, query->addrinfo);
|
log_lame(fctx, query->addrinfo);
|
||||||
result = dns_adb_marklame(fctx->adb, query->addrinfo,
|
result = dns_adb_marklame(fctx->adb, query->addrinfo,
|
||||||
&fctx->domain, fctx->type,
|
&fctx->name, fctx->type,
|
||||||
now + fctx->res->lame_ttl);
|
now + fctx->res->lame_ttl);
|
||||||
if (result != ISC_R_SUCCESS)
|
if (result != ISC_R_SUCCESS)
|
||||||
isc_log_write(dns_lctx, DNS_LOGCATEGORY_RESOLVER,
|
isc_log_write(dns_lctx, DNS_LOGCATEGORY_RESOLVER,
|
||||||
|
Reference in New Issue
Block a user