ソースを参照

Merge pull request #19426 from sanimej/restart

Vendoring miekg/dns @ 75e6e86cc601825c5dbcd4e0c209eab180997cd7
Vincent Demeester 9 年 前
コミット
011ca5f206

+ 1 - 1
hack/vendor.sh

@@ -43,7 +43,7 @@ fix_rewritten_imports github.com/coreos/etcd
 clone git github.com/ugorji/go 5abd4e96a45c386928ed2ca2a7ef63e2533e18ec
 clone git github.com/ugorji/go 5abd4e96a45c386928ed2ca2a7ef63e2533e18ec
 clone git github.com/hashicorp/consul v0.5.2
 clone git github.com/hashicorp/consul v0.5.2
 clone git github.com/boltdb/bolt v1.1.0
 clone git github.com/boltdb/bolt v1.1.0
-clone git github.com/miekg/dns d27455715200c7d3e321a1e5cadb27c9ee0b0f02
+clone git github.com/miekg/dns 75e6e86cc601825c5dbcd4e0c209eab180997cd7
 
 
 # get graph and distribution packages
 # get graph and distribution packages
 clone git github.com/docker/distribution cb08de17d74bef86ce6c5abe8b240e282f5750be
 clone git github.com/docker/distribution cb08de17d74bef86ce6c5abe8b240e282f5750be

+ 3 - 0
vendor/src/github.com/miekg/dns/server.go

@@ -535,6 +535,9 @@ Redo:
 	h.ServeDNS(w, req) // Writes back to the client
 	h.ServeDNS(w, req) // Writes back to the client
 
 
 Exit:
 Exit:
+	if w.tcp == nil {
+		return
+	}
 	// TODO(miek): make this number configurable?
 	// TODO(miek): make this number configurable?
 	if q > maxTCPQueries { // close socket after this many queries
 	if q > maxTCPQueries { // close socket after this many queries
 		w.Close()
 		w.Close()

+ 10 - 0
vendor/src/github.com/miekg/dns/udp_linux.go

@@ -24,6 +24,12 @@ func setUDPSocketOptions4(conn *net.UDPConn) error {
 	if err := syscall.SetsockoptInt(int(file.Fd()), syscall.IPPROTO_IP, syscall.IP_PKTINFO, 1); err != nil {
 	if err := syscall.SetsockoptInt(int(file.Fd()), syscall.IPPROTO_IP, syscall.IP_PKTINFO, 1); err != nil {
 		return err
 		return err
 	}
 	}
+	// Calling File() above results in the connection becoming blocking, we must fix that.
+	// See https://github.com/miekg/dns/issues/279
+	err = syscall.SetNonblock(int(file.Fd()), true)
+	if err != nil {
+		return err
+	}
 	return nil
 	return nil
 }
 }
 
 
@@ -36,6 +42,10 @@ func setUDPSocketOptions6(conn *net.UDPConn) error {
 	if err := syscall.SetsockoptInt(int(file.Fd()), syscall.IPPROTO_IPV6, syscall.IPV6_RECVPKTINFO, 1); err != nil {
 	if err := syscall.SetsockoptInt(int(file.Fd()), syscall.IPPROTO_IPV6, syscall.IPV6_RECVPKTINFO, 1); err != nil {
 		return err
 		return err
 	}
 	}
+	err = syscall.SetNonblock(int(file.Fd()), true)
+	if err != nil {
+		return err
+	}
 	return nil
 	return nil
 }
 }