Browse Source

add socksopt rxtxbuf for freebsd

Shelikhoo 3 years ago
parent
commit
16a44f65be
1 changed files with 23 additions and 0 deletions
  1. 23 0
      transport/internet/sockopt_darwin.go

+ 23 - 0
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
 }