风扇滑翔翼
2026-04-16 00:57:51 +08:00
committed by GitHub
parent 05e259c8e4
commit 3691741440
4 changed files with 24 additions and 14 deletions
+10 -4
View File
@@ -244,8 +244,11 @@ type UDPReader struct {
func (r *UDPReader) ReadMultiBuffer() (buf.MultiBuffer, error) { func (r *UDPReader) ReadMultiBuffer() (buf.MultiBuffer, error) {
if r.firstMsg != nil { if r.firstMsg != nil {
buffer := buf.NewWithSize(int32(len(r.firstMsg.Data))) buffer := buf.New()
buffer.Write(r.firstMsg.Data) _, err := buffer.Write(r.firstMsg.Data)
if err != nil {
return nil, err
}
buffer.UDP = r.firstDest buffer.UDP = r.firstDest
r.firstMsg = nil r.firstMsg = nil
@@ -275,8 +278,11 @@ func (r *UDPReader) ReadMultiBuffer() (buf.MultiBuffer, error) {
continue continue
} }
buffer := buf.NewWithSize(int32(len(dfMsg.Data))) buffer := buf.New()
buffer.Write(dfMsg.Data) if _, err := buffer.Write(dfMsg.Data); err != nil {
return nil, err
}
buffer.UDP = &dest buffer.UDP = &dest
return buf.MultiBuffer{buffer}, nil return buf.MultiBuffer{buffer}, nil
+4 -2
View File
@@ -103,8 +103,10 @@ func (c *udpConn) ReadMultiBuffer() (buf.MultiBuffer, error) {
return nil, io.EOF return nil, io.EOF
} }
b := buf.NewWithSize(int32(len(e.data))) b := buf.New()
b.Write(e.data) if _, err := b.Write(e.data); err != nil {
return nil, err
}
b.UDP = e.dest b.UDP = e.dest
return buf.MultiBuffer{b}, nil return buf.MultiBuffer{b}, nil
+5 -2
View File
@@ -350,8 +350,11 @@ func (c *udpConn) ReadMultiBuffer() (buf.MultiBuffer, error) {
return nil, io.EOF return nil, io.EOF
} }
b := buf.NewWithSize(int32(len(q.p))) b := buf.New()
b.Write(q.p) if _, err := b.Write(q.p); err != nil {
return nil, err
}
b.UDP = q.dest b.UDP = q.dest
return buf.MultiBuffer{b}, nil return buf.MultiBuffer{b}, nil
+5 -6
View File
@@ -5,7 +5,7 @@ import (
"net" "net"
"sync" "sync"
xbuf "github.com/xtls/xray-core/common/buf" "github.com/xtls/xray-core/common/bytespool"
"github.com/xtls/xray-core/common/errors" "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) { func (c *headerManagerConn) ReadFrom(p []byte) (n int, addr net.Addr, err error) {
buf := p buf := p
if len(buf) < UDPSize { if len(buf) < UDPSize {
b := xbuf.NewWithSize(UDPSize) b := bytespool.Alloc(UDPSize)
defer b.Release() b = b[:UDPSize]
b.Resize(0, UDPSize) defer bytespool.Free(b)
buf = b
buf = b.Bytes()
} }
n, addr, err = c.PacketConn.ReadFrom(buf) n, addr, err = c.PacketConn.ReadFrom(buf)