diff --git a/plugin/pkg/edns/edns.go b/plugin/pkg/edns/edns.go index 31f57ea9b..cd8639915 100644 --- a/plugin/pkg/edns/edns.go +++ b/plugin/pkg/edns/edns.go @@ -36,8 +36,7 @@ func SupportedOption(option uint16) bool { // Version checks the EDNS version in the request. If error // is nil everything is OK and we can invoke the plugin. If non-nil, the -// returned Msg is valid to be returned to the client (and should). For some -// reason this response should not contain a question RR in the question section. +// returned Msg is valid to be returned to the client (and should). func Version(req *dns.Msg) (*dns.Msg, error) { opt := req.IsEdns0() if opt == nil { @@ -48,8 +47,6 @@ func Version(req *dns.Msg) (*dns.Msg, error) { } m := new(dns.Msg) m.SetReply(req) - // zero out question section, wtf. - m.Question = nil o := new(dns.OPT) o.Hdr.Name = "." diff --git a/plugin/pkg/edns/edns_test.go b/plugin/pkg/edns/edns_test.go index a775b50f1..1976779bd 100644 --- a/plugin/pkg/edns/edns_test.go +++ b/plugin/pkg/edns/edns_test.go @@ -10,20 +10,32 @@ func TestVersion(t *testing.T) { m := ednsMsg() m.Extra[0].(*dns.OPT).SetVersion(2) - _, err := Version(m) + r, err := Version(m) if err == nil { t.Errorf("Expected wrong version, but got OK") } + if r.Question == nil { + t.Errorf("Expected question section, but got nil") + } + if r.Rcode != dns.RcodeBadVers { + t.Errorf("Expected Rcode to be of BADVER (16), but got %d", r.Rcode) + } + if r.Extra == nil { + t.Errorf("Expected OPT section, but got nil") + } } func TestVersionNoEdns(t *testing.T) { m := ednsMsg() m.Extra = nil - _, err := Version(m) + r, err := Version(m) if err != nil { t.Errorf("Expected no error, but got one: %s", err) } + if r != nil { + t.Errorf("Expected nil since not an EDNS0 request, but did not got nil") + } } func ednsMsg() *dns.Msg {