From dc85f14e5cff6aff4f7a65a1e44841c20271be0a Mon Sep 17 00:00:00 2001 From: stuart nelson <stuartnelson3@gmail.com> Date: Sun, 28 Oct 2018 17:02:58 +0100 Subject: [PATCH] Log error on SO_REUSEPORT and continue (#2243) The underlying system might not support SO_REUSEPORT, even though it is available in kernel 3.9+. If there's an error, continue. Signed-off-by: stuart nelson <stuartnelson3@gmail.com> --- core/dnsserver/listen_go111.go | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/core/dnsserver/listen_go111.go b/core/dnsserver/listen_go111.go index 3d730df8e..d71c9292b 100644 --- a/core/dnsserver/listen_go111.go +++ b/core/dnsserver/listen_go111.go @@ -8,19 +8,17 @@ import ( "net" "syscall" + "github.com/coredns/coredns/plugin/pkg/log" "golang.org/x/sys/unix" ) -const supportsReusePort = true - -func reuseportControl(network, address string, c syscall.RawConn) (opErr error) { - err := c.Control(func(fd uintptr) { - opErr = unix.SetsockoptInt(int(fd), unix.SOL_SOCKET, unix.SO_REUSEPORT, 1) +func reuseportControl(network, address string, c syscall.RawConn) error { + c.Control(func(fd uintptr) { + if err := unix.SetsockoptInt(int(fd), unix.SOL_SOCKET, unix.SO_REUSEPORT, 1); err != nil { + log.Warningf("Failed to set SO_REUSEPORT on socket: %s", err) + } }) - if err != nil { - return err - } - return opErr + return nil } func listen(network, addr string) (net.Listener, error) {