Browse Source

add socksopt rxtxbuf for freebsd

Shelikhoo 3 years ago
parent
commit
1a35c1dc69
1 changed files with 25 additions and 0 deletions
  1. 25 0
      transport/internet/sockopt_freebsd.go

+ 25 - 0
transport/internet/sockopt_freebsd.go

@@ -170,6 +170,19 @@ 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
 	return nil
 }
 }
 
 
@@ -215,6 +228,18 @@ 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
 	return nil
 }
 }