fix NXDOMAIN/NODATA fallthough case (#3118)
This commit is contained in:
parent
555e4877ae
commit
a64ff8cc0a
2 changed files with 27 additions and 1 deletions
plugin/kubernetes
|
@ -54,7 +54,9 @@ func (k Kubernetes) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.M
|
|||
fallthrough
|
||||
default:
|
||||
// Do a fake A lookup, so we can distinguish between NODATA and NXDOMAIN
|
||||
_, err = plugin.A(ctx, &k, zone, state, nil, plugin.Options{})
|
||||
fake := state.NewWithQuestion(state.QName(), dns.TypeA)
|
||||
fake.Zone = state.Zone
|
||||
_, err = plugin.A(ctx, &k, zone, fake, nil, plugin.Options{})
|
||||
}
|
||||
|
||||
if k.IsNameError(err) {
|
||||
|
|
|
@ -349,6 +349,30 @@ var dnsTestCases = []test.Case{
|
|||
test.SOA("cluster.local. 5 IN SOA ns.dns.cluster.local. hostmaster.cluster.local. 1499347823 7200 1800 86400 5"),
|
||||
},
|
||||
},
|
||||
// NS query for qname != zone (existing domain)
|
||||
{
|
||||
Qname: "testns.svc.cluster.local.", Qtype: dns.TypeNS,
|
||||
Rcode: dns.RcodeSuccess,
|
||||
Ns: []dns.RR{
|
||||
test.SOA("cluster.local. 5 IN SOA ns.dns.cluster.local. hostmaster.cluster.local. 1499347823 7200 1800 86400 5"),
|
||||
},
|
||||
},
|
||||
// NS query for qname != zone (non existing domain)
|
||||
{
|
||||
Qname: "foo.cluster.local.", Qtype: dns.TypeNS,
|
||||
Rcode: dns.RcodeNameError,
|
||||
Ns: []dns.RR{
|
||||
test.SOA("cluster.local. 5 IN SOA ns.dns.cluster.local. hostmaster.cluster.local. 1499347823 7200 1800 86400 5"),
|
||||
},
|
||||
},
|
||||
// NS query for qname != zone (non existing domain)
|
||||
{
|
||||
Qname: "foo.svc.cluster.local.", Qtype: dns.TypeNS,
|
||||
Rcode: dns.RcodeNameError,
|
||||
Ns: []dns.RR{
|
||||
test.SOA("cluster.local. 5 IN SOA ns.dns.cluster.local. hostmaster.cluster.local. 1499347823 7200 1800 86400 5"),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
func TestServeDNS(t *testing.T) {
|
||||
|
|
Loading…
Add table
Reference in a new issue