Commit 2113dfd6 authored by Mark Andrews's avatar Mark Andrews
Browse files

2079. [bug] The lame cache was not handling multiple types

                        correctly. [RT #16361]
parent 2dafa707
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 @@ ...@@ -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, ...@@ -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, ...@@ -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 @@ ...@@ -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) { ...@@ -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,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment