mirror of
https://github.com/coredns/coredns.git
synced 2025-10-27 16:24:19 -04:00
persist truncated state to client if lookup response is truncated (#4712)
Signed-off-by: Chris O'Haver <cohaver@infoblox.com>
This commit is contained in:
@@ -131,6 +131,9 @@ func (d *DNS64) Synthesize(origReq, origResponse, resp *dns.Msg) *dns.Msg {
|
|||||||
ret := dns.Msg{}
|
ret := dns.Msg{}
|
||||||
ret.SetReply(origReq)
|
ret.SetReply(origReq)
|
||||||
|
|
||||||
|
// persist truncated state of AAAA response
|
||||||
|
ret.Truncated = resp.Truncated
|
||||||
|
|
||||||
// 5.3.2: DNS64 MUST pass the additional section unchanged
|
// 5.3.2: DNS64 MUST pass the additional section unchanged
|
||||||
ret.Extra = resp.Extra
|
ret.Extra = resp.Extra
|
||||||
ret.Ns = resp.Ns
|
ret.Ns = resp.Ns
|
||||||
|
|||||||
@@ -434,6 +434,61 @@ func TestDNS64(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
// no AAAA records, A record response truncated.
|
||||||
|
name: "truncated A response",
|
||||||
|
req: &dns.Msg{
|
||||||
|
MsgHdr: dns.MsgHdr{
|
||||||
|
Id: 42,
|
||||||
|
RecursionDesired: true,
|
||||||
|
Opcode: dns.OpcodeQuery,
|
||||||
|
},
|
||||||
|
Question: []dns.Question{{"example.com.", dns.TypeAAAA, dns.ClassINET}},
|
||||||
|
},
|
||||||
|
initResp: &dns.Msg{ //success, no answers
|
||||||
|
MsgHdr: dns.MsgHdr{
|
||||||
|
Id: 42,
|
||||||
|
Opcode: dns.OpcodeQuery,
|
||||||
|
RecursionDesired: true,
|
||||||
|
Rcode: dns.RcodeSuccess,
|
||||||
|
Response: true,
|
||||||
|
},
|
||||||
|
Question: []dns.Question{{"example.com.", dns.TypeAAAA, dns.ClassINET}},
|
||||||
|
Ns: []dns.RR{test.SOA("example.com. 70 IN SOA foo bar 1 1 1 1 1")},
|
||||||
|
},
|
||||||
|
aResp: &dns.Msg{
|
||||||
|
MsgHdr: dns.MsgHdr{
|
||||||
|
Id: 43,
|
||||||
|
Opcode: dns.OpcodeQuery,
|
||||||
|
RecursionDesired: true,
|
||||||
|
Truncated: true,
|
||||||
|
Rcode: dns.RcodeSuccess,
|
||||||
|
Response: true,
|
||||||
|
},
|
||||||
|
Question: []dns.Question{{"example.com.", dns.TypeA, dns.ClassINET}},
|
||||||
|
Answer: []dns.RR{
|
||||||
|
test.A("example.com. 60 IN A 192.0.2.42"),
|
||||||
|
test.A("example.com. 5000 IN A 192.0.2.43"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
resp: &dns.Msg{
|
||||||
|
MsgHdr: dns.MsgHdr{
|
||||||
|
Id: 42,
|
||||||
|
Opcode: dns.OpcodeQuery,
|
||||||
|
RecursionDesired: true,
|
||||||
|
Truncated: true,
|
||||||
|
Rcode: dns.RcodeSuccess,
|
||||||
|
Response: true,
|
||||||
|
},
|
||||||
|
Question: []dns.Question{{"example.com.", dns.TypeAAAA, dns.ClassINET}},
|
||||||
|
Answer: []dns.RR{
|
||||||
|
test.AAAA("example.com. 60 IN AAAA 64:ff9b::192.0.2.42"),
|
||||||
|
// override RR ttl to SOA ttl, since it's lower
|
||||||
|
test.AAAA("example.com. 70 IN AAAA 64:ff9b::192.0.2.43"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
_, pfx, _ := net.ParseCIDR("64:ff9b::/96")
|
_, pfx, _ := net.ParseCIDR("64:ff9b::/96")
|
||||||
|
|||||||
Reference in New Issue
Block a user