From 873d0deeaa5501b2260f0132b1b3dccb6655f269 Mon Sep 17 00:00:00 2001 From: wwqgtxx Date: Thu, 21 Aug 2025 08:40:03 +0800 Subject: [PATCH] chore: make XorConn replaceable for splice --- transport/vless/encryption/xor.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/transport/vless/encryption/xor.go b/transport/vless/encryption/xor.go index 8d97ff93..88bd7698 100644 --- a/transport/vless/encryption/xor.go +++ b/transport/vless/encryption/xor.go @@ -198,3 +198,27 @@ func (c *XorConn) Read(b []byte) (int, error) { // 5-bytes, data, 5-bytes... } return n, err } + +func (c *XorConn) WriterReplaceable() bool { + if !c.Divide { // never replaceable + return false + } + if !c.out_after0 { + return false + } + return true +} + +func (c *XorConn) ReaderReplaceable() bool { + if !c.Divide { // never replaceable + return false + } + if !c.in_after0 || !c.isHeader { + return false + } + return true +} + +func (c *XorConn) Upstream() any { + return c.Conn +}