Mux client: Fix b.UDP being overwritten by the next frame (#6822)

https://github.com/XTLS/Xray-core/pull/6822#issuecomment-5993165787
This commit is contained in:
Artem Lytkin
2026-10-08 09:24:11 +00:00
committed by GitHub
parent 2a14c50775
commit 836a6fed38
2 changed files with 52 additions and 4 deletions
+5 -4
View File
@@ -14,15 +14,16 @@ import (
type PacketReader struct {
reader io.Reader
eof bool
dest *net.Destination
dest net.Destination
}
// NewPacketReader creates a new PacketReader.
// dest is copied because the caller reuses it for the next frame.
func NewPacketReader(reader io.Reader, dest *net.Destination) *PacketReader {
return &PacketReader{
reader: reader,
eof: false,
dest: dest,
dest: *dest,
}
}
@@ -47,8 +48,8 @@ func (r *PacketReader) ReadMultiBuffer() (buf.MultiBuffer, error) {
return nil, err
}
r.eof = true
if r.dest != nil && r.dest.Network == net.Network_UDP {
b.UDP = r.dest
if r.dest.Network == net.Network_UDP {
b.UDP = &r.dest // only one packet is read, so b owns r.dest
}
return buf.MultiBuffer{b}, nil
}