mirror of
https://github.com/NLnetLabs/unbound.git
synced 2025-12-20 23:00:56 -05:00
- 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:
parent
6d57b0ddb7
commit
45517ad616
4 changed files with 1052 additions and 4 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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
1041
testdata/iter_dname_yx.rpl
vendored
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue