风扇滑翔翼
2026-04-16 00:57:51 +08:00
committed by GitHub
parent 05e259c8e4
commit 3691741440
4 changed files with 24 additions and 14 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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)