aboutsummaryrefslogtreecommitdiff
path: root/plugin/clouddns
diff options
context:
space:
mode:
authorGravatar Miek Gieben <miek@miek.nl> 2020-05-11 16:51:02 +0200
committerGravatar GitHub <noreply@github.com> 2020-05-11 07:51:02 -0700
commit7aaed71b92cbdddfbc13ddc6ce618bb083502c42 (patch)
tree43c325298c2b3a5f54b61d7dbddd54a98dd6ace1 /plugin/clouddns
parent886cdd9dd361310e1e99861ece5bcac1a59f8367 (diff)
downloadcoredns-7aaed71b92cbdddfbc13ddc6ce618bb083502c42.tar.gz
coredns-7aaed71b92cbdddfbc13ddc6ce618bb083502c42.tar.zst
coredns-7aaed71b92cbdddfbc13ddc6ce618bb083502c42.zip
Fix query for SOA record for delegated zone (#3875)
Addresses a bug in the file plugin where SOA queries to zone delegations are inappropriately returned the SOA for the delegating zone, and not a downward referral to the delegated zone. Here is an example of what I believe the expected downward referral in response to a SOA query for a delegated zone should be (note that no SOA record is returned): ~~~ ; <<>> DiG 9.11.3-1ubuntu1.5-Ubuntu <<>> @k.root-servers.net. miek.nl. SOA ; (2 servers found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58381 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 3, ADDITIONAL: 7 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;miek.nl. IN SOA ;; AUTHORITY SECTION: nl. 172800 IN NS ns1.dns.nl. nl. 172800 IN NS ns2.dns.nl. nl. 172800 IN NS ns3.dns.nl. ;; ADDITIONAL SECTION: ns1.dns.nl. 172800 IN A 194.0.28.53 ns2.dns.nl. 172800 IN A 194.146.106.42 ns3.dns.nl. 172800 IN A 194.0.25.24 ns1.dns.nl. 172800 IN AAAA 2001:678:2c:0:194:0:28:53 ns2.dns.nl. 172800 IN AAAA 2001:67c:1010:10::53 ns3.dns.nl. 172800 IN AAAA 2001:678:20::24 ~~~ See #3852 for the original fix. Modified clouddns/route53 and removed the faulty tests there. Signed-off-by: Miek Gieben <miek@miek.nl>
Diffstat (limited to 'plugin/clouddns')
-rw-r--r--plugin/clouddns/clouddns_test.go24
1 files changed, 9 insertions, 15 deletions
diff --git a/plugin/clouddns/clouddns_test.go b/plugin/clouddns/clouddns_test.go
index dafd65bba..7d9db85f3 100644
--- a/plugin/clouddns/clouddns_test.go
+++ b/plugin/clouddns/clouddns_test.go
@@ -10,7 +10,7 @@ import (
"github.com/coredns/coredns/plugin/pkg/fall"
"github.com/coredns/coredns/plugin/pkg/upstream"
"github.com/coredns/coredns/plugin/test"
- crequest "github.com/coredns/coredns/request"
+ "github.com/coredns/coredns/request"
"github.com/miekg/dns"
gcp "google.golang.org/api/dns/v1"
@@ -138,7 +138,7 @@ func TestCloudDNS(t *testing.T) {
r.Fall = fall.Zero
r.Fall.SetZonesFromArgs([]string{"gov."})
r.Next = test.HandlerFunc(func(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) {
- state := crequest.Request{W: w, Req: r}
+ state := request.Request{W: w, Req: r}
qname := state.Name()
m := new(dns.Msg)
rcode := dns.RcodeServerFailure
@@ -211,30 +211,24 @@ func TestCloudDNS(t *testing.T) {
// 5. Explicit SOA query for example.org.
{
qname: "example.org",
- qtype: dns.TypeSOA,
- wantAnswer: []string{"org. 300 IN SOA ns-cloud-e1.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 300 259200 300"},
- },
- // 6. Explicit SOA query for example.org.
- {
- qname: "example.org",
qtype: dns.TypeNS,
wantNS: []string{"org. 300 IN SOA ns-cloud-c1.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 300 259200 300"},
},
- // 7. AAAA query for split-example.org must return NODATA.
+ // 6. AAAA query for split-example.org must return NODATA.
{
qname: "split-example.gov",
qtype: dns.TypeAAAA,
wantRetCode: dns.RcodeSuccess,
wantNS: []string{"org. 300 IN SOA ns-cloud-c1.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 300 259200 300"},
},
- // 8. Zone not configured.
+ // 7. Zone not configured.
{
qname: "badexample.com",
qtype: dns.TypeA,
wantRetCode: dns.RcodeServerFailure,
wantMsgRCode: dns.RcodeServerFailure,
},
- // 9. No record found. Return SOA record.
+ // 8. No record found. Return SOA record.
{
qname: "bad.org",
qtype: dns.TypeA,
@@ -242,25 +236,25 @@ func TestCloudDNS(t *testing.T) {
wantMsgRCode: dns.RcodeNameError,
wantNS: []string{"org. 300 IN SOA ns-cloud-c1.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 300 259200 300"},
},
- // 10. No record found. Fallthrough.
+ // 9. No record found. Fallthrough.
{
qname: "example.gov",
qtype: dns.TypeA,
wantAnswer: []string{"example.gov. 300 IN A 2.4.6.8"},
},
- // 11. other-zone.example.org is stored in a different hosted zone. success
+ // 10. other-zone.example.org is stored in a different hosted zone. success
{
qname: "other-example.org",
qtype: dns.TypeA,
wantAnswer: []string{"other-example.org. 300 IN A 3.5.7.9"},
},
- // 12. split-example.org only has A record. Expect NODATA.
+ // 11. split-example.org only has A record. Expect NODATA.
{
qname: "split-example.org",
qtype: dns.TypeAAAA,
wantNS: []string{"org. 300 IN SOA ns-cloud-e1.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 300 259200 300"},
},
- // 13. *.www.example.org is a wildcard CNAME to www.example.org.
+ // 12. *.www.example.org is a wildcard CNAME to www.example.org.
{
qname: "a.www.example.org",
qtype: dns.TypeA,