Ver Fonte

Merge pull request #1351 from sanimej/edns

Send truncated external responses to the client
Madhu Venugopal há 9 anos atrás
pai
commit
7c3bbb4593
1 ficheiros alterados com 5 adições e 0 exclusões
  1. 5 0
      libnetwork/resolver.go

+ 5 - 0
libnetwork/resolver.go

@@ -474,6 +474,11 @@ func (r *resolver) ServeDNS(w dns.ResponseWriter, query *dns.Msg) {
 				// read again
 				// read again
 				resp, err = co.ReadMsg()
 				resp, err = co.ReadMsg()
 				if err != nil {
 				if err != nil {
+					// Truncated DNS replies should be sent to the client so that the
+					// client can retry over TCP
+					if err == dns.ErrTruncated && resp != nil {
+						break
+					}
 					if nerr, ok := err.(net.Error); ok && nerr.Timeout() {
 					if nerr, ok := err.(net.Error); ok && nerr.Timeout() {
 						r.addQueryToGC(w, query)
 						r.addQueryToGC(w, query)
 					}
 					}