christos 2011-11-16 17:28:10 +00:00
parent 2f168eae0b
commit 07c8bd2ff7
2 changed files with 12 additions and 15 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: query.c,v 1.6 2011/09/11 18:55:27 christos Exp $ */ /* $NetBSD: query.c,v 1.7 2011/11/16 17:28:10 christos Exp $ */
/* /*
* Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC")
@ -1395,11 +1395,9 @@ query_addadditional(void *arg, dns_name_t *name, dns_rdatatype_t qtype) {
goto addname; goto addname;
if (result == DNS_R_NCACHENXRRSET) { if (result == DNS_R_NCACHENXRRSET) {
dns_rdataset_disassociate(rdataset); dns_rdataset_disassociate(rdataset);
/* if (sigrdataset != NULL &&
* Negative cache entries don't have sigrdatasets. dns_rdataset_isassociated(sigrdataset))
*/ dns_rdataset_disassociate(sigrdataset);
INSIST(sigrdataset == NULL ||
! dns_rdataset_isassociated(sigrdataset));
} }
if (result == ISC_R_SUCCESS) { if (result == ISC_R_SUCCESS) {
mname = NULL; mname = NULL;
@ -1440,8 +1438,9 @@ query_addadditional(void *arg, dns_name_t *name, dns_rdatatype_t qtype) {
goto addname; goto addname;
if (result == DNS_R_NCACHENXRRSET) { if (result == DNS_R_NCACHENXRRSET) {
dns_rdataset_disassociate(rdataset); dns_rdataset_disassociate(rdataset);
INSIST(sigrdataset == NULL || if (sigrdataset != NULL &&
! dns_rdataset_isassociated(sigrdataset)); dns_rdataset_isassociated(sigrdataset))
dns_rdataset_disassociate(sigrdataset);
} }
if (result == ISC_R_SUCCESS) { if (result == ISC_R_SUCCESS) {
mname = NULL; mname = NULL;
@ -1891,10 +1890,8 @@ query_addadditional2(void *arg, dns_name_t *name, dns_rdatatype_t qtype) {
goto setcache; goto setcache;
if (result == DNS_R_NCACHENXRRSET) { if (result == DNS_R_NCACHENXRRSET) {
dns_rdataset_disassociate(rdataset); dns_rdataset_disassociate(rdataset);
/* if (dns_rdataset_isassociated(sigrdataset))
* Negative cache entries don't have sigrdatasets. dns_rdataset_disassociate(sigrdataset);
*/
INSIST(! dns_rdataset_isassociated(sigrdataset));
} }
if (result == ISC_R_SUCCESS) { if (result == ISC_R_SUCCESS) {
/* Remember the result as a cache */ /* Remember the result as a cache */

View File

@ -1,4 +1,4 @@
/* $NetBSD: rbtdb.c,v 1.10 2011/09/11 18:55:36 christos Exp $ */ /* $NetBSD: rbtdb.c,v 1.11 2011/11/16 17:28:10 christos Exp $ */
/* /*
* Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC")
@ -5055,7 +5055,7 @@ cache_find(dns_db_t *db, dns_name_t *name, dns_dbversion_t *version,
rdataset); rdataset);
if (need_headerupdate(found, search.now)) if (need_headerupdate(found, search.now))
update = found; update = found;
if (foundsig != NULL) { if (!NEGATIVE(found) && foundsig != NULL) {
bind_rdataset(search.rbtdb, node, foundsig, search.now, bind_rdataset(search.rbtdb, node, foundsig, search.now,
sigrdataset); sigrdataset);
if (need_headerupdate(foundsig, search.now)) if (need_headerupdate(foundsig, search.now))
@ -5687,7 +5687,7 @@ cache_findrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
} }
if (found != NULL) { if (found != NULL) {
bind_rdataset(rbtdb, rbtnode, found, now, rdataset); bind_rdataset(rbtdb, rbtnode, found, now, rdataset);
if (foundsig != NULL) if (!NEGATIVE(found) && foundsig != NULL)
bind_rdataset(rbtdb, rbtnode, foundsig, now, bind_rdataset(rbtdb, rbtnode, foundsig, now,
sigrdataset); sigrdataset);
} }