Browse Source

add SO_REUSEPORT for freebsd 11

lucifer9 5 years ago
parent
commit
2bd5f2fe96
1 changed files with 4 additions and 1 deletions
  1. 4 1
      transport/internet/sockopt_freebsd.go

+ 4 - 1
transport/internet/sockopt_freebsd.go

@@ -35,6 +35,7 @@ type pfiocNatlook struct {
 
 
 const (
 const (
 	sizeofPfiocNatlook = 0x4c
 	sizeofPfiocNatlook = 0x4c
+	soReUsePort        = 0x00000200
 	soReUsePortLB      = 0x00010000
 	soReUsePortLB      = 0x00010000
 )
 )
 
 
@@ -192,7 +193,9 @@ func bindAddr(fd uintptr, ip []byte, port uint32) error {
 	}
 	}
 
 
 	if err := syscall.SetsockoptInt(int(fd), syscall.SOL_SOCKET, soReUsePortLB, 1); err != nil {
 	if err := syscall.SetsockoptInt(int(fd), syscall.SOL_SOCKET, soReUsePortLB, 1); err != nil {
-		return newError("failed to set resuse_port").Base(err).AtWarning()
+		if err := syscall.SetsockoptInt(int(fd), syscall.SOL_SOCKET, soReUsePort, 1); err != nil {
+			return newError("failed to set resuse_port").Base(err).AtWarning()
+		}
 	}
 	}
 
 
 	var sockaddr syscall.Sockaddr
 	var sockaddr syscall.Sockaddr