From 942fbb37ec46f1907e57a04c44ca790bd47ed52c Mon Sep 17 00:00:00 2001 From: Jonathan Davies Date: Tue, 23 May 2023 17:56:00 +0100 Subject: [PATCH] core: Use SO_REUSEPORT_LB on FreeBSD (#5554) to balance load between threads. --- listen_unix.go | 2 +- listen_unix_setopt.go | 7 +++++++ listen_unix_setopt_freebsd.go | 7 +++++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 listen_unix_setopt.go create mode 100644 listen_unix_setopt_freebsd.go diff --git a/listen_unix.go b/listen_unix.go index 50d9a66d..7011a1e6 100644 --- a/listen_unix.go +++ b/listen_unix.go @@ -119,7 +119,7 @@ func reusePort(network, address string, conn syscall.RawConn) error { return nil } return conn.Control(func(descriptor uintptr) { - if err := unix.SetsockoptInt(int(descriptor), unix.SOL_SOCKET, unix.SO_REUSEPORT, 1); err != nil { + if err := unix.SetsockoptInt(int(descriptor), unix.SOL_SOCKET, unixSOREUSEPORT, 1); err != nil { Log().Error("setting SO_REUSEPORT", zap.String("network", network), zap.String("address", address), diff --git a/listen_unix_setopt.go b/listen_unix_setopt.go new file mode 100644 index 00000000..c9675f92 --- /dev/null +++ b/listen_unix_setopt.go @@ -0,0 +1,7 @@ +//go:build unix && !freebsd + +package caddy + +import "golang.org/x/sys/unix" + +const unixSOREUSEPORT = unix.SO_REUSEPORT diff --git a/listen_unix_setopt_freebsd.go b/listen_unix_setopt_freebsd.go new file mode 100644 index 00000000..06520540 --- /dev/null +++ b/listen_unix_setopt_freebsd.go @@ -0,0 +1,7 @@ +//go:build freebsd + +package caddy + +import "golang.org/x/sys/unix" + +const unixSOREUSEPORT = unix.SO_REUSEPORT_LB