From aec2d57d5b9f5ca97763a1b49b76f0bcb5852e1a Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Thu, 12 Sep 2002 04:52:13 +0000 Subject: [PATCH] 1381. [bug] named failed to correctly process answers that contained DNAME records where the resulting CNAME resulted in a negative answer. --- CHANGES | 4 ++++ lib/dns/resolver.c | 8 +++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index 1df883ec95..9b227f7cd5 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,7 @@ +1381. [bug] named failed to correctly process answers that + contained DNAME records where the resulting CNAME + resulted in a negative answer. + 1380. [func] 'rndc recursing' dump recursing queries to 'recursing-file = "named.recursing";'. diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c index b2fd1f9d73..d545c7ae08 100644 --- a/lib/dns/resolver.c +++ b/lib/dns/resolver.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: resolver.c,v 1.252 2002/09/12 04:42:46 marka Exp $ */ +/* $Id: resolver.c,v 1.253 2002/09/12 04:52:13 marka Exp $ */ #include @@ -4001,8 +4001,8 @@ answer_response(fetchctx_t *fctx) { for (rdataset = ISC_LIST_HEAD(name->list); rdataset != NULL; rdataset = ISC_LIST_NEXT(rdataset, link)) { + isc_boolean_t found_dname = ISC_FALSE; found = ISC_FALSE; - want_chaining = ISC_FALSE; aflag = 0; if (rdataset->type == dns_rdatatype_dname) { /* @@ -4029,6 +4029,8 @@ answer_response(fetchctx_t *fctx) { want_chaining = ISC_FALSE; } else if (result != ISC_R_SUCCESS) return (result); + else + found_dname = ISC_TRUE; } else if (rdataset->type == dns_rdatatype_sig && rdataset->covers == dns_rdatatype_dname) { @@ -4074,7 +4076,7 @@ answer_response(fetchctx_t *fctx) { /* * DNAME chaining. */ - if (want_chaining) { + if (found_dname) { /* * Copy the the dname into the * qname fixed name.