diff --git a/adapter/outbound/masque.go b/adapter/outbound/masque.go index ce36620c..613c08f5 100644 --- a/adapter/outbound/masque.go +++ b/adapter/outbound/masque.go @@ -315,10 +315,8 @@ func (w *Masque) run(ctx context.Context) error { go func() { defer runCancel() - buf := pool.Get(pool.UDPBufferSize) - defer pool.Put(buf) for runCtx.Err() == nil { - n, err := ipConn.ReadPacket(buf) + buf, err := ipConn.ReadPacket() if err != nil { if errors.Is(err, net.ErrClosed) { log.Errorln("[Masque](%s) connection closed while writing to IP connection: %v", w.name, err) @@ -327,7 +325,7 @@ func (w *Masque) run(ctx context.Context) error { log.Warnln("[Masque](%s) error reading from IP connection: %v, continuing...", w.name, err) continue } - if _, err := w.tunDevice.Write([][]byte{buf[:n]}, 0); err != nil { + if _, err := w.tunDevice.Write([][]byte{buf}, 0); err != nil { log.Errorln("[Masque](%s) error writing to TUN device: %v", w.name, err) return } diff --git a/go.mod b/go.mod index bb7aa9d1..39cbeec6 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( github.com/metacubex/blake3 v0.1.0 github.com/metacubex/chacha v0.1.5 github.com/metacubex/chi v0.1.0 - github.com/metacubex/connect-ip-go v0.0.0-20260128031117-1cad62060727 + github.com/metacubex/connect-ip-go v0.0.0-20260412152424-e1625567920a github.com/metacubex/cpu v0.1.1 github.com/metacubex/edwards25519 v1.2.0 github.com/metacubex/fswatch v0.1.1 diff --git a/go.sum b/go.sum index 8e9638ab..ab09fcd6 100644 --- a/go.sum +++ b/go.sum @@ -87,8 +87,8 @@ github.com/metacubex/chacha v0.1.5 h1:fKWMb/5c7ZrY8Uoqi79PPFxl+qwR7X/q0OrsAubyX2 github.com/metacubex/chacha v0.1.5/go.mod h1:Djn9bPZxLTXbJFSeyo0/qzEzQI+gUSSzttuzZM75GH8= github.com/metacubex/chi v0.1.0 h1:rjNDyDj50nRpicG43CNkIw4ssiCbmDL8d7wJXKlUCsg= github.com/metacubex/chi v0.1.0/go.mod h1:zM5u5oMQt8b2DjvDHvzadKrP6B2ztmasL1YHRMbVV+g= -github.com/metacubex/connect-ip-go v0.0.0-20260128031117-1cad62060727 h1:qbZQ0sO0bDBKPvTd/qNQK6513300WJ5GRsHnw3PO4Ho= -github.com/metacubex/connect-ip-go v0.0.0-20260128031117-1cad62060727/go.mod h1:xYC8Ik7/rN6no+vTRuWMEziGwm3brA0wNM/zZP9qhOQ= +github.com/metacubex/connect-ip-go v0.0.0-20260412152424-e1625567920a h1:Ph5UfTWDsGruZ+v95Df1ycTflQFmpZBFg2LUvj2kx/M= +github.com/metacubex/connect-ip-go v0.0.0-20260412152424-e1625567920a/go.mod h1:xYC8Ik7/rN6no+vTRuWMEziGwm3brA0wNM/zZP9qhOQ= github.com/metacubex/cpu v0.1.1 h1:rRV5HGmeuGzjiKI3hYbL0dCd0qGwM7VUtk4ICXD06mI= github.com/metacubex/cpu v0.1.1/go.mod h1:09VEt4dSRLR+bOA8l4w4NDuzGZ8n5dkMv7e8axgEeTU= github.com/metacubex/edwards25519 v1.2.0 h1:pIQZLBsjQgg3Nl/c86YYFEUAbL5qQRnPq4LrgIw0KK4= diff --git a/transport/masque/client_h2.go b/transport/masque/client_h2.go index 150cce84..75b833d4 100644 --- a/transport/masque/client_h2.go +++ b/transport/masque/client_h2.go @@ -150,7 +150,7 @@ type h2IpConn struct { closeErr error } -func (c *h2IpConn) ReadPacket(b []byte) (n int, err error) { +func (c *h2IpConn) ReadPacket() (b []byte, err error) { start: data, err := c.str.ReceiveDatagram(context.Background()) if err != nil { @@ -161,16 +161,16 @@ start: }() select { case <-c.closeChan: - return 0, c.closeErr + return nil, c.closeErr default: - return 0, err + return nil, err } } if err := c.handleIncomingProxiedPacket(data); err != nil { log.Debugln("dropping proxied packet: %s", err) goto start } - return copy(b, data), nil + return data, nil } func (c *h2IpConn) handleIncomingProxiedPacket(data []byte) error { diff --git a/transport/masque/masque.go b/transport/masque/masque.go index 4c53549a..a95f4dd0 100644 --- a/transport/masque/masque.go +++ b/transport/masque/masque.go @@ -28,7 +28,7 @@ const ( ) type IpConn interface { - ReadPacket(b []byte) (n int, err error) + ReadPacket() (b []byte, err error) WritePacket(b []byte) (icmp []byte, err error) Close() error }