From 16a44f65be7015516c9e9dc8d1942ea949a98d23 Mon Sep 17 00:00:00 2001 From: Shelikhoo Date: Sun, 16 Jan 2022 22:49:58 +0000 Subject: [PATCH] add socksopt rxtxbuf for freebsd --- transport/internet/sockopt_darwin.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/transport/internet/sockopt_darwin.go b/transport/internet/sockopt_darwin.go index 4480dd1c3..da7eecb77 100644 --- a/transport/internet/sockopt_darwin.go +++ b/transport/internet/sockopt_darwin.go @@ -42,6 +42,18 @@ func applyOutboundSocketOptions(network string, address string, fd uintptr, conf } } + if config.SocketTxBufSize != 0 { + if err := unix.SetsockoptInt(int(fd), unix.SOL_SOCKET, unix.SO_SNDBUF, int(config.SocketTxBufSize)); err != nil { + return newError("failed to set SO_SNDBUF/SO_SNDBUFFORCE").Base(err) + } + } + + if config.SocketRxBufSize != 0 { + if err := unix.SetsockoptInt(int(fd), unix.SOL_SOCKET, unix.SO_RCVBUF, int(config.SocketRxBufSize)); err != nil { + return newError("failed to set SO_RCVBUF/SO_RCVBUFFORCE").Base(err) + } + } + return nil } @@ -74,6 +86,17 @@ func applyInboundSocketOptions(network string, fd uintptr, config *SocketConfig) } } + if config.SocketTxBufSize != 0 { + if err := unix.SetsockoptInt(int(fd), unix.SOL_SOCKET, unix.SO_SNDBUF, int(config.SocketTxBufSize)); err != nil { + return newError("failed to set SO_SNDBUF/SO_SNDBUFFORCE").Base(err) + } + } + + if config.SocketRxBufSize != 0 { + if err := unix.SetsockoptInt(int(fd), unix.SOL_SOCKET, unix.SO_RCVBUF, int(config.SocketRxBufSize)); err != nil { + return newError("failed to set SO_RCVBUF/SO_RCVBUFFORCE").Base(err) + } + } return nil }