From 6d8fe7315f3f1ead41da329e967d665d4f3e51c4 Mon Sep 17 00:00:00 2001 From: Eken Chan Date: Thu, 22 Jun 2023 14:43:22 +0800 Subject: [PATCH] XRV should work without rawConn --- proxy/vless/encoding/encoding.go | 6 +++++- proxy/vless/inbound/inbound.go | 4 ++-- proxy/vless/outbound/outbound.go | 4 ++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/proxy/vless/encoding/encoding.go b/proxy/vless/encoding/encoding.go index f668c402..cf962492 100644 --- a/proxy/vless/encoding/encoding.go +++ b/proxy/vless/encoding/encoding.go @@ -247,7 +247,11 @@ func XtlsRead(reader buf.Reader, writer buf.Writer, timer signal.ActivityUpdater } } } - reader = buf.NewReadVReader(conn, rawConn, nil) + if rawConn != nil { + reader = buf.NewReadVReader(conn, rawConn, nil) + } else { + reader = buf.NewReader(conn) + } ct = counter newError("XtlsRead readV").WriteToLog(session.ExportIDToError(ctx)) } diff --git a/proxy/vless/inbound/inbound.go b/proxy/vless/inbound/inbound.go index 688c98a3..8653e1e3 100644 --- a/proxy/vless/inbound/inbound.go +++ b/proxy/vless/inbound/inbound.go @@ -539,7 +539,7 @@ func (h *Handler) Process(ctx context.Context, network net.Network, connection s var err error - if rawConn != nil { + if requestAddons.Flow == vless.XRV { var counter stats.Counter if statConn != nil { counter = statConn.ReadCounter @@ -591,7 +591,7 @@ func (h *Handler) Process(ctx context.Context, network net.Network, connection s } var err error - if rawConn != nil && requestAddons.Flow == vless.XRV { + if requestAddons.Flow == vless.XRV { var counter stats.Counter if statConn != nil { counter = statConn.WriteCounter diff --git a/proxy/vless/outbound/outbound.go b/proxy/vless/outbound/outbound.go index 4f42ea9f..12962a47 100644 --- a/proxy/vless/outbound/outbound.go +++ b/proxy/vless/outbound/outbound.go @@ -247,7 +247,7 @@ func (h *Handler) Process(ctx context.Context, link *transport.Link, dialer inte } var err error - if rawConn != nil && requestAddons.Flow == vless.XRV { + if requestAddons.Flow == vless.XRV { if tlsConn, ok := iConn.(*tls.Conn); ok { if tlsConn.ConnectionState().Version != gotls.VersionTLS13 { return newError(`failed to use `+requestAddons.Flow+`, found outer tls version `, tlsConn.ConnectionState().Version).AtWarning() @@ -292,7 +292,7 @@ func (h *Handler) Process(ctx context.Context, link *transport.Link, dialer inte serverReader = xudp.NewPacketReader(conn) } - if rawConn != nil { + if requestAddons.Flow == vless.XRV { var counter stats.Counter if statConn != nil { counter = statConn.ReadCounter