diff --git a/transport/vless/xtls.go b/transport/vless/xtls.go index 69035aa0..6e2a4d46 100644 --- a/transport/vless/xtls.go +++ b/transport/vless/xtls.go @@ -1,8 +1,10 @@ package vless import ( + "context" "net" + C "github.com/Dreamacro/clash/constant" xtls "github.com/xtls/go" ) @@ -20,6 +22,10 @@ func StreamXTLSConn(conn net.Conn, cfg *XTLSConfig) (net.Conn, error) { } xtlsConn := xtls.Client(conn, xtlsConfig) - err := xtlsConn.Handshake() + + // fix tls handshake not timeout + ctx, cancel := context.WithTimeout(context.Background(), C.DefaultTLSTimeout) + defer cancel() + err := xtlsConn.HandshakeContext(ctx) return xtlsConn, err }