- Fix #1235: Fix too long DNAME expansion produces SERVFAIL instead

of YXDOMAIN + query loop, reported by Petr Spacek.


git-svn-id: file:///svn/unbound/trunk@4049 be551aaa-1e26-0410-a405-d3ace91eadb9
This commit is contained in:
Wouter Wijngaards 2017-03-13 08:27:01 +00:00
parent 6d57b0ddb7
commit 45517ad616
4 changed files with 1052 additions and 4 deletions

View file

@ -1,5 +1,7 @@
13 March 2017: Wouter
- testbound understands Deckard MATCH rcode question answer commands.
- Fix #1235: Fix too long DNAME expansion produces SERVFAIL instead
of YXDOMAIN + query loop, reported by Petr Spacek.
10 March 2017: Wouter
- Fix #1234: shortening DNAME loop produces duplicate DNAME records

View file

@ -2258,6 +2258,11 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq,
} else
iter_scrub_ds(iq->response, ns, iq->dp->name);
} else iter_scrub_ds(iq->response, NULL, NULL);
if(type == RESPONSE_TYPE_THROWAWAY &&
FLAGS_GET_RCODE(iq->response->rep->flags) == LDNS_RCODE_YXDOMAIN) {
/* YXDOMAIN is a permanent error, no need to retry */
type = RESPONSE_TYPE_ANSWER;
}
/* handle each of the type cases */
if(type == RESPONSE_TYPE_ANSWER) {

View file

@ -1149,12 +1149,12 @@ match_question(uint8_t* q, size_t qlen, uint8_t* p, size_t plen, int mttl)
if(!s) s = strstr(qcmpstr, ";; AUTHORITY SECTION");
if(!s) s = strstr(qcmpstr, ";; ADDITIONAL SECTION");
if(!s) s = strstr(qcmpstr, ";; MSG SIZE");
if(s) s = 0;
if(s) *s = 0;
s = strstr(pcmpstr, ";; ANSWER SECTION");
if(!s) s = strstr(pcmpstr, ";; AUTHORITY SECTION");
if(!s) s = strstr(pcmpstr, ";; ADDITIONAL SECTION");
if(!s) s = strstr(pcmpstr, ";; MSG SIZE");
if(s) s = 0;
if(s) *s = 0;
r = (strcmp(qcmpstr, pcmpstr) == 0);
@ -1215,11 +1215,11 @@ match_answer(uint8_t* q, size_t qlen, uint8_t* p, size_t plen, int mttl)
s = strstr(qcmpstr, ";; AUTHORITY SECTION");
if(!s) s = strstr(qcmpstr, ";; ADDITIONAL SECTION");
if(!s) s = strstr(qcmpstr, ";; MSG SIZE");
if(s) s = 0;
if(s) *s = 0;
s = strstr(pcmpstr, ";; AUTHORITY SECTION");
if(!s) s = strstr(pcmpstr, ";; ADDITIONAL SECTION");
if(!s) s = strstr(pcmpstr, ";; MSG SIZE");
if(s) s = 0;
if(s) *s = 0;
r = (strcmp(qcmpstr, pcmpstr) == 0);

1041
testdata/iter_dname_yx.rpl vendored Normal file

File diff suppressed because it is too large Load diff