Skip to content
Snippets Groups Projects
Commit 884a5ac9 authored by Marek Vavruša's avatar Marek Vavruša
Browse files

layer/iterate: work around auths hinting CNAME authority

this fixes an issue when nameserver responds with AA=0 and authority
of a CNAME target (which is in current bailiwick)
parent 0d011f5b
Branches
Tags
No related merge requests found
......@@ -261,6 +261,16 @@ static int process_authority(knot_pkt_t *pkt, struct kr_request *req)
}
}
/* Work around servers sending back CNAME with different delegation and no AA. */
const knot_pktsection_t *an = knot_pkt_section(pkt, KNOT_ANSWER);
if (result == KNOT_STATE_DONE && an->count > 0) {
const knot_rrset_t *rr = knot_pkt_rr(an, 0);
if (rr->type == KNOT_RRTYPE_CNAME) {
DEBUG_MSG("<= different delegation, but has a CNAME answer\n");
result = KNOT_STATE_CONSUME;
}
}
/* CONSUME => Unhelpful referral.
* DONE => Zone cut updated. */
return result;
......
; config options
server:
target-fetch-policy: "3 2 1 0 0"
stub-zone:
name: "."
stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET.
CONFIG_END
SCENARIO_BEGIN Test iterator with NS sending CNAME answer and authority of CNAME target.
; K.ROOT-SERVERS.NET.
RANGE_BEGIN 0 100
ADDRESS 193.0.14.129
ENTRY_BEGIN
MATCH opcode qtype qname
ADJUST copy_id
REPLY QR NOERROR
SECTION QUESTION
. IN NS
SECTION ANSWER
. IN NS K.ROOT-SERVERS.NET.
SECTION ADDITIONAL
K.ROOT-SERVERS.NET. IN A 193.0.14.129
ENTRY_END
ENTRY_BEGIN
MATCH opcode subdomain
ADJUST copy_id copy_query
REPLY QR AA NOERROR
SECTION QUESTION
ingdirect.com.au. IN A
SECTION AUTHORITY
ingdirect.com.au. IN NS l4.nstld.com.
SECTION ADDITIONAL
l4.nstld.com. IN A 209.112.114.33
ENTRY_END
ENTRY_BEGIN
MATCH opcode qtype qname
ADJUST copy_id copy_query
REPLY QR NOERROR
SECTION QUESTION
l4.nstld.com. IN A
SECTION ANSWER
l4.nstld.com. IN A 209.112.114.33
ENTRY_END
ENTRY_BEGIN
MATCH opcode qtype qname
ADJUST copy_id copy_query
REPLY QR NOERROR
SECTION QUESTION
l4.nstld.com. IN AAAA
SECTION AUTHORITY
. SOA bla bla 1 2 3 4 5
ENTRY_END
ENTRY_BEGIN
MATCH opcode qtype qname
ADJUST copy_id copy_query
REPLY QR AA NOERROR
SECTION QUESTION
clb.ingdirect.com.au. IN A
SECTION AUTHORITY
clb.ingdirect.com.au. IN NS ncfphywebgtm01-c.ingdirect.com.au.
SECTION ADDITIONAL
ncfphywebgtm01-c.ingdirect.com.au. IN A 203.92.27.132
ENTRY_END
ENTRY_BEGIN
MATCH opcode qtype qname
ADJUST copy_id copy_query
REPLY QR NOERROR
SECTION QUESTION
ncfphywebgtm01-c.ingdirect.com.au. IN AAAA
SECTION AUTHORITY
. SOA bla bla 1 2 3 4 5
ENTRY_END
RANGE_END
; l4.nstld.com.
RANGE_BEGIN 0 100
ADDRESS 209.112.114.33
ENTRY_BEGIN
MATCH opcode qtype qname
ADJUST copy_id copy_query
REPLY QR NOERROR
SECTION QUESTION
www.ingdirect.com.au. IN A
SECTION ANSWER
www.ingdirect.com.au. IN CNAME www.clb.ingdirect.com.au.
SECTION AUTHORITY
clb.ingdirect.com.au. IN NS ncfphywebgtm01-c.ingdirect.com.au.
SECTION ADDITIONAL
ncfphywebgtm01-c.ingdirect.com.au. IN A 203.92.27.132
ENTRY_END
RANGE_END
; ncfphywebgtm01-c.ingdirect.com.au.
RANGE_BEGIN 0 100
ADDRESS 203.92.27.132
ENTRY_BEGIN
MATCH opcode qtype qname
ADJUST copy_id copy_query
REPLY QR AA NOERROR
SECTION QUESTION
www.clb.ingdirect.com.au. IN A
SECTION ANSWER
www.clb.ingdirect.com.au. IN A 203.31.183.134
ENTRY_END
ENTRY_BEGIN
MATCH opcode qtype qname
ADJUST copy_id copy_query
REPLY QR REFUSED
SECTION QUESTION
www.ingdirect.com.au. IN A
ENTRY_END
RANGE_END
STEP 1 QUERY
ENTRY_BEGIN
REPLY RD
SECTION QUESTION
www.ingdirect.com.au. IN A
ENTRY_END
; recursion happens here.
STEP 10 CHECK_ANSWER
ENTRY_BEGIN
MATCH all
REPLY QR RD RA NOERROR
SECTION QUESTION
www.ingdirect.com.au. IN A
SECTION ANSWER
www.ingdirect.com.au. IN CNAME www.clb.ingdirect.com.au.
www.clb.ingdirect.com.au. IN A 203.31.183.134
ENTRY_END
SCENARIO_END
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment