ソースを参照

set TCP keep alive only on TCP socket

Shelikhoo 4 年 前
コミット
c564c84b17
1 ファイル変更6 行追加6 行削除
  1. 6 6
      transport/internet/sockopt_linux.go

+ 6 - 6
transport/internet/sockopt_linux.go

@@ -47,12 +47,6 @@ func applyOutboundSocketOptions(network string, address string, fd uintptr, conf
 		}
 	}
 
-	if config.KeepAliveDuration != 0 {
-		if err := syscall.SetsockoptInt(int(fd), syscall.IPPROTO_TCP, syscall.TCP_KEEPINTVL, int(config.KeepAliveDuration)); err != nil {
-			return newError("failed to set TCP_KEEPINTVL", err)
-		}
-	}
-
 	if isTCPSocket(network) {
 		switch config.Tfo {
 		case SocketConfig_Enable:
@@ -64,6 +58,12 @@ func applyOutboundSocketOptions(network string, address string, fd uintptr, conf
 				return newError("failed to set TCP_FASTOPEN_CONNECT=0").Base(err)
 			}
 		}
+
+		if config.KeepAliveDuration != 0 {
+			if err := syscall.SetsockoptInt(int(fd), syscall.IPPROTO_TCP, syscall.TCP_KEEPINTVL, int(config.KeepAliveDuration)); err != nil {
+				return newError("failed to set TCP_KEEPINTVL", err)
+			}
+		}
 	}
 
 	if config.Tproxy.IsEnabled() {