From fa2bcf74a9d9d7c6e38930abea9bba8525788b19 Mon Sep 17 00:00:00 2001 From: Star Brilliant Date: Wed, 28 Nov 2018 15:31:02 +0800 Subject: [PATCH] Remove dns.ErrTruncated according to https://github.com/miekg/dns/pull/815 --- doh-client/client.go | 2 +- doh-client/ietf.go | 2 +- doh-server/server.go | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doh-client/client.go b/doh-client/client.go index e8e1d61..3fbd228 100644 --- a/doh-client/client.go +++ b/doh-client/client.go @@ -273,7 +273,7 @@ func (c *Client) handlerFunc(w dns.ResponseWriter, r *dns.Msg, isTCP bool) { } else { reply, _, err = c.tcpClient.Exchange(r, upstream) } - if err == nil || err == dns.ErrTruncated { + if err == nil { w.WriteMsg(reply) return } diff --git a/doh-client/ietf.go b/doh-client/ietf.go index 85a9a34..df18d82 100644 --- a/doh-client/ietf.go +++ b/doh-client/ietf.go @@ -205,7 +205,7 @@ func (c *Client) parseResponseIETF(ctx context.Context, w dns.ResponseWriter, r fullReply := new(dns.Msg) err = fullReply.Unpack(body) - if err != nil && err != dns.ErrTruncated { + if err != nil { log.Println(err) req.reply.Rcode = dns.RcodeServerFailure w.WriteMsg(req.reply) diff --git a/doh-server/server.go b/doh-server/server.go index 7508aee..22ffce3 100644 --- a/doh-server/server.go +++ b/doh-server/server.go @@ -251,14 +251,14 @@ func (s *Server) doDNSQuery(ctx context.Context, req *DNSRequest) (resp *DNSRequ req.currentUpstream = s.conf.Upstream[rand.Intn(numServers)] if !s.conf.TCPOnly { req.response, _, err = s.udpClient.Exchange(req.request, req.currentUpstream) - if err == dns.ErrTruncated { + if err == nil && req.response != nil && req.response.Truncated { log.Println(err) req.response, _, err = s.tcpClient.Exchange(req.request, req.currentUpstream) } } else { req.response, _, err = s.tcpClient.Exchange(req.request, req.currentUpstream) } - if err == nil || err == dns.ErrTruncated { + if err == nil { return req, nil } log.Printf("DNS error from upstream %s: %s\n", req.currentUpstream, err.Error())