diff --git a/go.mod b/go.mod index ca104527..2e19c8a2 100644 --- a/go.mod +++ b/go.mod @@ -31,7 +31,7 @@ require ( github.com/metacubex/sing-shadowsocks2 v0.2.6 github.com/metacubex/sing-shadowtls v0.0.0-20250503063515-5d9f966d17a2 github.com/metacubex/sing-tun v0.4.7 - github.com/metacubex/sing-vmess v0.2.4-0.20250817075824-5e05f123ccdd + github.com/metacubex/sing-vmess v0.2.4-0.20250819151326-51d195aac5db github.com/metacubex/sing-wireguard v0.0.0-20250503063753-2dc62acc626f github.com/metacubex/smux v0.0.0-20250503055512-501391591dee github.com/metacubex/tfo-go v0.0.0-20250516165257-e29c16ae41d4 diff --git a/go.sum b/go.sum index 3437b18e..18cbabb0 100644 --- a/go.sum +++ b/go.sum @@ -131,8 +131,8 @@ github.com/metacubex/sing-shadowtls v0.0.0-20250503063515-5d9f966d17a2 h1:gXU+MY github.com/metacubex/sing-shadowtls v0.0.0-20250503063515-5d9f966d17a2/go.mod h1:mbfboaXauKJNIHJYxQRa+NJs4JU9NZfkA+I33dS2+9E= github.com/metacubex/sing-tun v0.4.7 h1:ZDY/W+1c7PeWWKeKRyUo18fySF/TWjB0i5ui81Ar778= github.com/metacubex/sing-tun v0.4.7/go.mod h1:xHecZRwBnKWe6zG9amAK9cXf91lF6blgjBqm+VvOrmU= -github.com/metacubex/sing-vmess v0.2.4-0.20250817075824-5e05f123ccdd h1:VfD6UxKPAg7u9rPyxl18lQkpE9s8dZq0u2cPAgQShWs= -github.com/metacubex/sing-vmess v0.2.4-0.20250817075824-5e05f123ccdd/go.mod h1:21R5R1u90uUvBQF0owoooEu96/SAYYD56nDrwm6nFaM= +github.com/metacubex/sing-vmess v0.2.4-0.20250819151326-51d195aac5db h1:W7VKxR0r5IR+56Lblx2iyrEaykx0esdQwTQbkSrSaek= +github.com/metacubex/sing-vmess v0.2.4-0.20250819151326-51d195aac5db/go.mod h1:21R5R1u90uUvBQF0owoooEu96/SAYYD56nDrwm6nFaM= github.com/metacubex/sing-wireguard v0.0.0-20250503063753-2dc62acc626f h1:Sr/DYKYofKHKc4GF3qkRGNuj6XA6c0eqPgEDN+VAsYU= github.com/metacubex/sing-wireguard v0.0.0-20250503063753-2dc62acc626f/go.mod h1:jpAkVLPnCpGSfNyVmj6Cq4YbuZsFepm/Dc+9BAOcR80= github.com/metacubex/smux v0.0.0-20250503055512-501391591dee h1:lp6hJ+4wCLZu113awp7P6odM2okB5s60HUyF0FMqKmo= diff --git a/listener/reality/reality.go b/listener/reality/reality.go index d91055f8..256dbcf6 100644 --- a/listener/reality/reality.go +++ b/listener/reality/reality.go @@ -113,3 +113,11 @@ func (c realityConnWrapper) Upstream() any { func (c realityConnWrapper) CloseWrite() error { return c.Close() } + +func (c realityConnWrapper) ReaderReplaceable() bool { + return true +} + +func (c realityConnWrapper) WriterReplaceable() bool { + return true +} diff --git a/listener/sing_vless/server.go b/listener/sing_vless/server.go index d386ef67..7dfcd010 100644 --- a/listener/sing_vless/server.go +++ b/listener/sing_vless/server.go @@ -25,11 +25,12 @@ import ( "github.com/metacubex/sing-vmess/vless" "github.com/metacubex/sing/common" "github.com/metacubex/sing/common/metadata" + "github.com/metacubex/sing/common/network" ) func init() { vless.RegisterTLS(func(conn net.Conn) (loaded bool, netConn net.Conn, reflectType reflect.Type, reflectPointer unsafe.Pointer) { - tlsConn, loaded := common.Cast[*reality.Conn](conn) // *utls.Conn + tlsConn, loaded := network.CastReader[*reality.Conn](conn) // *utls.Conn if !loaded { return } @@ -37,7 +38,7 @@ func init() { }) vless.RegisterTLS(func(conn net.Conn) (loaded bool, netConn net.Conn, reflectType reflect.Type, reflectPointer unsafe.Pointer) { - tlsConn, loaded := common.Cast[*tlsC.UConn](conn) // *utls.UConn + tlsConn, loaded := network.CastReader[*tlsC.UConn](conn) // *utls.UConn if !loaded { return } @@ -45,7 +46,7 @@ func init() { }) vless.RegisterTLS(func(conn net.Conn) (loaded bool, netConn net.Conn, reflectType reflect.Type, reflectPointer unsafe.Pointer) { - tlsConn, loaded := common.Cast[*encryption.ClientConn](conn) + tlsConn, loaded := network.CastReader[*encryption.ClientConn](conn) if !loaded { return } @@ -53,7 +54,7 @@ func init() { }) vless.RegisterTLS(func(conn net.Conn) (loaded bool, netConn net.Conn, reflectType reflect.Type, reflectPointer unsafe.Pointer) { - tlsConn, loaded := common.Cast[*encryption.ServerConn](conn) + tlsConn, loaded := network.CastReader[*encryption.ServerConn](conn) if !loaded { return }