Эх сурвалжийг харах

Finalmask UDP: Support WireGuard & Shadowsocks AEAD/2022 (#5643)

https://github.com/XTLS/Xray-core/pull/5633#issuecomment-3833910076
LjhAUMEM 4 сар өмнө
parent
commit
888c0d2e1f

+ 7 - 7
transport/internet/kcp/dialer.go

@@ -54,15 +54,15 @@ func DialKCP(ctx context.Context, dest net.Destination, streamSettings *internet
 		return nil, errors.New("failed to dial to dest: ", err).AtWarning().Base(err)
 	}
 
-	wrapper, ok := rawConn.(*internet.PacketConnWrapper)
-	if !ok {
-		rawConn.Close()
-		return nil, errors.New("raw is not PacketConnWrapper")
-	}
+	if streamSettings.UdpmaskManager != nil {
+		wrapper, ok := rawConn.(*internet.PacketConnWrapper)
+		if !ok {
+			rawConn.Close()
+			return nil, errors.New("raw is not PacketConnWrapper")
+		}
 
-	raw := wrapper.Conn
+		raw := wrapper.Conn
 
-	if streamSettings.UdpmaskManager != nil {
 		wrapper.Conn, err = streamSettings.UdpmaskManager.WrapPacketConnClient(raw)
 		if err != nil {
 			raw.Close()

+ 19 - 1
transport/internet/udp/dialer.go

@@ -4,6 +4,7 @@ import (
 	"context"
 
 	"github.com/xtls/xray-core/common"
+	"github.com/xtls/xray-core/common/errors"
 	"github.com/xtls/xray-core/common/net"
 	"github.com/xtls/xray-core/transport/internet"
 	"github.com/xtls/xray-core/transport/internet/stat"
@@ -20,7 +21,24 @@ func init() {
 			if err != nil {
 				return nil, err
 			}
+
+			if streamSettings != nil && streamSettings.UdpmaskManager != nil {
+				wrapper, ok := conn.(*internet.PacketConnWrapper)
+				if !ok {
+					conn.Close()
+					return nil, errors.New("conn is not PacketConnWrapper")
+				}
+
+				raw := wrapper.Conn
+
+				wrapper.Conn, err = streamSettings.UdpmaskManager.WrapPacketConnClient(raw)
+				if err != nil {
+					raw.Close()
+					return nil, errors.New("mask err").Base(err)
+				}
+			}
+
 			// TODO: handle dialer options
-			return stat.Connection(conn), nil
+			return conn, nil
 		}))
 }