core: Use SO_REUSEPORT_LB on FreeBSD (#5554)

to balance load between threads.
This commit is contained in:
Jonathan Davies 2023-05-23 17:56:00 +01:00 committed by GitHub
parent cee4441cb1
commit 942fbb37ec
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 1 deletions

View file

@ -119,7 +119,7 @@ func reusePort(network, address string, conn syscall.RawConn) error {
return nil return nil
} }
return conn.Control(func(descriptor uintptr) { 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", Log().Error("setting SO_REUSEPORT",
zap.String("network", network), zap.String("network", network),
zap.String("address", address), zap.String("address", address),

7
listen_unix_setopt.go Normal file
View file

@ -0,0 +1,7 @@
//go:build unix && !freebsd
package caddy
import "golang.org/x/sys/unix"
const unixSOREUSEPORT = unix.SO_REUSEPORT

View file

@ -0,0 +1,7 @@
//go:build freebsd
package caddy
import "golang.org/x/sys/unix"
const unixSOREUSEPORT = unix.SO_REUSEPORT_LB