From 3691741440b051fa20f174cfc471d038f2b3c06d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A3=8E=E6=89=87=E6=BB=91=E7=BF=94=E7=BF=BC?= Date: Thu, 16 Apr 2026 00:57:51 +0800 Subject: [PATCH] Chore: Use buf.New() instead of buf.NewWithSize() (#5946) https://github.com/XTLS/Xray-core/pull/5941#issuecomment-4252905907 https://github.com/XTLS/Xray-core/pull/5946#issuecomment-4253919073 --- proxy/hysteria/client.go | 14 ++++++++++---- proxy/tun/udp_fullcone.go | 6 ++++-- proxy/wireguard/tun.go | 7 +++++-- transport/internet/finalmask/finalmask.go | 11 +++++------ 4 files changed, 24 insertions(+), 14 deletions(-) diff --git a/proxy/hysteria/client.go b/proxy/hysteria/client.go index 7c2bc58d..614a7ff9 100644 --- a/proxy/hysteria/client.go +++ b/proxy/hysteria/client.go @@ -244,8 +244,11 @@ type UDPReader struct { func (r *UDPReader) ReadMultiBuffer() (buf.MultiBuffer, error) { if r.firstMsg != nil { - buffer := buf.NewWithSize(int32(len(r.firstMsg.Data))) - buffer.Write(r.firstMsg.Data) + buffer := buf.New() + _, err := buffer.Write(r.firstMsg.Data) + if err != nil { + return nil, err + } buffer.UDP = r.firstDest r.firstMsg = nil @@ -275,8 +278,11 @@ func (r *UDPReader) ReadMultiBuffer() (buf.MultiBuffer, error) { continue } - buffer := buf.NewWithSize(int32(len(dfMsg.Data))) - buffer.Write(dfMsg.Data) + buffer := buf.New() + if _, err := buffer.Write(dfMsg.Data); err != nil { + return nil, err + } + buffer.UDP = &dest return buf.MultiBuffer{buffer}, nil diff --git a/proxy/tun/udp_fullcone.go b/proxy/tun/udp_fullcone.go index fdec7bf6..ab59e97f 100644 --- a/proxy/tun/udp_fullcone.go +++ b/proxy/tun/udp_fullcone.go @@ -103,8 +103,10 @@ func (c *udpConn) ReadMultiBuffer() (buf.MultiBuffer, error) { return nil, io.EOF } - b := buf.NewWithSize(int32(len(e.data))) - b.Write(e.data) + b := buf.New() + if _, err := b.Write(e.data); err != nil { + return nil, err + } b.UDP = e.dest return buf.MultiBuffer{b}, nil diff --git a/proxy/wireguard/tun.go b/proxy/wireguard/tun.go index 6decfa70..4168e175 100644 --- a/proxy/wireguard/tun.go +++ b/proxy/wireguard/tun.go @@ -350,8 +350,11 @@ func (c *udpConn) ReadMultiBuffer() (buf.MultiBuffer, error) { return nil, io.EOF } - b := buf.NewWithSize(int32(len(q.p))) - b.Write(q.p) + b := buf.New() + if _, err := b.Write(q.p); err != nil { + return nil, err + } + b.UDP = q.dest return buf.MultiBuffer{b}, nil diff --git a/transport/internet/finalmask/finalmask.go b/transport/internet/finalmask/finalmask.go index e7bf0080..2fca1215 100644 --- a/transport/internet/finalmask/finalmask.go +++ b/transport/internet/finalmask/finalmask.go @@ -5,7 +5,7 @@ import ( "net" "sync" - xbuf "github.com/xtls/xray-core/common/buf" + "github.com/xtls/xray-core/common/bytespool" "github.com/xtls/xray-core/common/errors" ) @@ -150,11 +150,10 @@ type headerReadAddrAware interface { func (c *headerManagerConn) ReadFrom(p []byte) (n int, addr net.Addr, err error) { buf := p if len(buf) < UDPSize { - b := xbuf.NewWithSize(UDPSize) - defer b.Release() - b.Resize(0, UDPSize) - - buf = b.Bytes() + b := bytespool.Alloc(UDPSize) + b = b[:UDPSize] + defer bytespool.Free(b) + buf = b } n, addr, err = c.PacketConn.ReadFrom(buf)