Skip to content

Commit

Permalink
proxy/trojan: fix writing UDP packet
Browse files Browse the repository at this point in the history
close v2fly#2440, close v2fly#1795
  • Loading branch information
dyhkwong committed Apr 1, 2023
1 parent 9b52628 commit b42f436
Showing 1 changed file with 10 additions and 10 deletions.
20 changes: 10 additions & 10 deletions proxy/trojan/protocol.go
Expand Up @@ -101,11 +101,11 @@ type PacketWriter struct {

// WriteMultiBuffer implements buf.Writer
func (w *PacketWriter) WriteMultiBuffer(mb buf.MultiBuffer) error {
b := make([]byte, maxLength)
for !mb.IsEmpty() {
var length int
mb, length = buf.SplitBytes(mb, b)
if _, err := w.writePacket(b[:length], w.Target); err != nil {
for _, b := range mb {
if b.IsEmpty() {
continue
}
if _, err := w.writePacket(b.Bytes(), w.Target); err != nil {
buf.ReleaseMulti(mb)
return err
}
Expand All @@ -116,11 +116,11 @@ func (w *PacketWriter) WriteMultiBuffer(mb buf.MultiBuffer) error {

// WriteMultiBufferWithMetadata writes udp packet with destination specified
func (w *PacketWriter) WriteMultiBufferWithMetadata(mb buf.MultiBuffer, dest net.Destination) error {
b := make([]byte, maxLength)
for !mb.IsEmpty() {
var length int
mb, length = buf.SplitBytes(mb, b)
if _, err := w.writePacket(b[:length], dest); err != nil {
for _, b := range mb {
if b.IsEmpty() {
continue
}
if _, err := w.writePacket(b.Bytes(), dest); err != nil {
buf.ReleaseMulti(mb)
return err
}
Expand Down

0 comments on commit b42f436

Please sign in to comment.