diff options
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | plugin/forward/forward.go | 3 | ||||
-rw-r--r-- | plugin/forward/lookup.go | 1 | ||||
-rw-r--r-- | plugin/forward/truncated.go | 29 |
4 files changed, 2 insertions, 33 deletions
@@ -31,7 +31,7 @@ godeps: go get -u github.com/prometheus/client_golang/prometheus/promhttp go get -u github.com/prometheus/client_golang/prometheus (cd $(GOPATH)/src/github.com/mholt/caddy && git checkout -q v0.11.1) - (cd $(GOPATH)/src/github.com/miekg/dns && git checkout -q v1.0.15) + (cd $(GOPATH)/src/github.com/miekg/dns && git checkout -q v1.1.0) (cd $(GOPATH)/src/github.com/prometheus/client_golang && git checkout -q v0.8.0) @ # for travis only, if this fails we don't care, but don't see benchmarks go get -u golang.org/x/tools/cmd/benchcmp || true diff --git a/plugin/forward/forward.go b/plugin/forward/forward.go index dfa1aaca1..66526509b 100644 --- a/plugin/forward/forward.go +++ b/plugin/forward/forward.go @@ -116,7 +116,7 @@ func (f *Forward) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg continue } // Retry with TCP if truncated and prefer_udp configured. - if err == dns.ErrTruncated && !opts.forceTCP && f.opts.preferUDP { + if ret != nil && ret.Truncated && !opts.forceTCP && f.opts.preferUDP { opts.forceTCP = true continue } @@ -127,7 +127,6 @@ func (f *Forward) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg child.Finish() } - ret, err = truncated(state, ret, err) upstreamErr = err if err != nil { diff --git a/plugin/forward/lookup.go b/plugin/forward/lookup.go index 855230b9a..f3eb8f34a 100644 --- a/plugin/forward/lookup.go +++ b/plugin/forward/lookup.go @@ -35,7 +35,6 @@ func (f *Forward) Forward(state request.Request) (*dns.Msg, error) { ret, err := proxy.Connect(context.Background(), state, f.opts) - ret, err = truncated(state, ret, err) upstreamErr = err if err != nil { diff --git a/plugin/forward/truncated.go b/plugin/forward/truncated.go deleted file mode 100644 index fb821d335..000000000 --- a/plugin/forward/truncated.go +++ /dev/null @@ -1,29 +0,0 @@ -package forward - -import ( - "github.com/coredns/coredns/request" - - "github.com/miekg/dns" -) - -// truncated looks at the error and if truncated return a nil error -// and a possible reconstructed dns message if that was nil. -func truncated(state request.Request, ret *dns.Msg, err error) (*dns.Msg, error) { - // If you query for instance ANY isc.org; you get a truncated query back which miekg/dns fails to unpack - // because the RRs are not finished. The returned message can be useful or useless. Return the original - // query with some header bits set that they should retry with TCP. - if err != dns.ErrTruncated { - return ret, err - } - - // We may or may not have something sensible... if not reassemble something to send to the client. - m := ret - if ret == nil { - m = new(dns.Msg) - m.SetReply(state.Req) - m.Truncated = true - m.Authoritative = true - m.Rcode = dns.RcodeSuccess - } - return m, nil -} |