فهرست منبع

Fix tcp keep alive

世界 3 سال پیش
والد
کامیت
d06fd03dd8
4فایلهای تغییر یافته به همراه3 افزوده شده و 15 حذف شده
  1. 1 10
      common/dialer/default.go
  2. 2 2
      common/mux/service.go
  3. 0 1
      constant/timeout.go
  4. 0 2
      inbound/default.go

+ 1 - 10
common/dialer/default.go

@@ -9,7 +9,6 @@ import (
 	"github.com/sagernet/sing-box/common/warning"
 	C "github.com/sagernet/sing-box/constant"
 	"github.com/sagernet/sing-box/option"
-	"github.com/sagernet/sing/common"
 	"github.com/sagernet/sing/common/control"
 	M "github.com/sagernet/sing/common/metadata"
 	N "github.com/sagernet/sing/common/network"
@@ -113,15 +112,7 @@ func NewDefault(router adapter.Router, options option.DialerOptions) *DefaultDia
 }
 
 func (d *DefaultDialer) DialContext(ctx context.Context, network string, address M.Socksaddr) (net.Conn, error) {
-	conn, err := d.Dialer.DialContext(ctx, network, address.Unwrap().String())
-	if err != nil {
-		return nil, err
-	}
-	if tcpConn, isTCP := common.Cast[*net.TCPConn](conn); isTCP {
-		tcpConn.SetKeepAlive(true)
-		tcpConn.SetKeepAlivePeriod(C.TCPKeepAlivePeriod)
-	}
-	return conn, nil
+	return d.Dialer.DialContext(ctx, network, address.Unwrap().String())
 }
 
 func (d *DefaultDialer) ListenPacket(ctx context.Context, destination M.Socksaddr) (net.PacketConn, error) {

+ 2 - 2
common/mux/service.go

@@ -38,8 +38,8 @@ func NewConnection(ctx context.Context, router adapter.Router, errorHandler E.Ha
 			go func() {
 				logger.InfoContext(ctx, "inbound multiplex connection to ", metadata.Destination)
 				hErr := router.RouteConnection(ctx, &ServerConn{ExtendedConn: bufio.NewExtendedConn(stream)}, metadata)
+				stream.Close()
 				if hErr != nil {
-					stream.Close()
 					errorHandler.NewError(ctx, hErr)
 				}
 			}()
@@ -54,8 +54,8 @@ func NewConnection(ctx context.Context, router adapter.Router, errorHandler E.Ha
 					packetConn = &ServerPacketAddrConn{ExtendedConn: bufio.NewExtendedConn(stream)}
 				}
 				hErr := router.RoutePacketConnection(ctx, packetConn, metadata)
+				stream.Close()
 				if hErr != nil {
-					stream.Close()
 					errorHandler.NewError(ctx, hErr)
 				}
 			}()

+ 0 - 1
constant/timeout.go

@@ -4,7 +4,6 @@ import "time"
 
 const (
 	TCPTimeout         = 5 * time.Second
-	TCPKeepAlivePeriod = 30 * time.Second
 	ReadPayloadTimeout = 300 * time.Millisecond
 	DNSTimeout         = 10 * time.Second
 	QUICTimeout        = 30 * time.Second

+ 0 - 2
inbound/default.go

@@ -154,8 +154,6 @@ func (a *myInboundAdapter) loopTCPIn() {
 		if err != nil {
 			return
 		}
-		conn.SetKeepAlive(true)
-		conn.SetKeepAlivePeriod(C.TCPKeepAlivePeriod)
 		go func() {
 			ctx := log.ContextWithNewID(a.ctx)
 			var metadata adapter.InboundContext