From a24e8771262b053ab61a4b493deee24d2c1743f6 Mon Sep 17 00:00:00 2001 From: null Date: Tue, 3 Feb 2026 18:14:27 +0800 Subject: [PATCH 1/3] mask --- transport/internet/udp/dialer.go | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/transport/internet/udp/dialer.go b/transport/internet/udp/dialer.go index 27f1505ab10d..7a3848395ad8 100644 --- a/transport/internet/udp/dialer.go +++ b/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 } + + wrapper, ok := conn.(*internet.PacketConnWrapper) + if !ok { + conn.Close() + return nil, errors.New("conn is not PacketConnWrapper") + } + + raw := wrapper.Conn + + if streamSettings.UdpmaskManager != nil { + 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 })) } From c0ff544685203a6a4f3347906faf30f168881085 Mon Sep 17 00:00:00 2001 From: null Date: Tue, 3 Feb 2026 22:24:12 +0800 Subject: [PATCH 2/3] try fix test --- transport/internet/kcp/dialer.go | 14 +++++++------- transport/internet/udp/dialer.go | 14 +++++++------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/transport/internet/kcp/dialer.go b/transport/internet/kcp/dialer.go index 577ef27b5b0a..a49155886b22 100644 --- a/transport/internet/kcp/dialer.go +++ b/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() diff --git a/transport/internet/udp/dialer.go b/transport/internet/udp/dialer.go index 7a3848395ad8..b8cdac2ffdd9 100644 --- a/transport/internet/udp/dialer.go +++ b/transport/internet/udp/dialer.go @@ -22,15 +22,15 @@ func init() { return nil, err } - wrapper, ok := conn.(*internet.PacketConnWrapper) - if !ok { - conn.Close() - return nil, errors.New("conn is not PacketConnWrapper") - } + if streamSettings.UdpmaskManager != nil { + wrapper, ok := conn.(*internet.PacketConnWrapper) + if !ok { + conn.Close() + return nil, errors.New("conn 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() From 68dcd4e1a293acdb7a2b8976514122a6db5996e4 Mon Sep 17 00:00:00 2001 From: null Date: Tue, 3 Feb 2026 22:34:23 +0800 Subject: [PATCH 3/3] fix test --- transport/internet/udp/dialer.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/transport/internet/udp/dialer.go b/transport/internet/udp/dialer.go index b8cdac2ffdd9..af25eb338c0a 100644 --- a/transport/internet/udp/dialer.go +++ b/transport/internet/udp/dialer.go @@ -22,7 +22,7 @@ func init() { return nil, err } - if streamSettings.UdpmaskManager != nil { + if streamSettings != nil && streamSettings.UdpmaskManager != nil { wrapper, ok := conn.(*internet.PacketConnWrapper) if !ok { conn.Close()