From: Wouter Wijngaards Date: Wed, 21 Feb 2018 13:13:58 +0000 (+0000) Subject: - Fix #3512: unbound incorrectly reports SERVFAIL for CAA query X-Git-Tag: release-1.7.0rc1~17 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b89db7082119797daa0a49e4af74dfda7bd58ff6;p=thirdparty%2Funbound.git - Fix #3512: unbound incorrectly reports SERVFAIL for CAA query when there is a CNAME loop. git-svn-id: file:///svn/unbound/trunk@4544 be551aaa-1e26-0410-a405-d3ace91eadb9 --- diff --git a/doc/Changelog b/doc/Changelog index 92ecbd17c..687c8b48e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +21 February 2018: Wouter + - Fix #3512: unbound incorrectly reports SERVFAIL for CAA query + when there is a CNAME loop. + 19 February 2018: Wouter - Fix #3505: Documentation for default local zones references wrong RFC. diff --git a/iterator/iterator.c b/iterator/iterator.c index 7f3c65737..1501fa00d 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -1157,6 +1157,10 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, if(iq->query_restart_count > MAX_RESTART_COUNT) { verbose(VERB_QUERY, "request has exceeded the maximum number" " of query restarts with %d", iq->query_restart_count); + if(iq->response) { + iq->state = FINISHED_STATE; + return 1; + } return error_response(qstate, id, LDNS_RCODE_SERVFAIL); } @@ -1246,6 +1250,10 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, iq->qchase.qname_len = slen; /* This *is* a query restart, even if it is a cheap * one. */ + msg->rep->an_numrrsets = 0; + msg->rep->ns_numrrsets = 0; + msg->rep->ar_numrrsets = 0; + msg->rep->rrset_count = 0; iq->dp = NULL; iq->refetch_glue = 0; iq->query_restart_count++; @@ -2739,6 +2747,10 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, if (qstate->env->cfg->qname_minimisation) iq->minimisation_state = INIT_MINIMISE_STATE; /* Clear the query state, since this is a query restart. */ + iq->response->rep->an_numrrsets = 0; + iq->response->rep->ns_numrrsets = 0; + iq->response->rep->ar_numrrsets = 0; + iq->response->rep->rrset_count = 0; iq->deleg_msg = NULL; iq->dp = NULL; iq->dsns_point = NULL;