diff --git a/proxy/vmess/inbound/inbound.go b/proxy/vmess/inbound/inbound.go index ac0b8701..e4ac0087 100644 --- a/proxy/vmess/inbound/inbound.go +++ b/proxy/vmess/inbound/inbound.go @@ -140,9 +140,12 @@ func transferResponse(timer signal.ActivityTimer, session *encoding.ServerSessio bodyWriter := session.EncodeResponseBody(request, output) - mergeReader := buf.NewMergingReader(input) + var reader buf.Reader = input + if request.Command == protocol.RequestCommandTCP { + reader = buf.NewMergingReader(input) + } // Optimize for small response packet - data, err := mergeReader.Read() + data, err := reader.Read() if err != nil { return err } @@ -158,7 +161,7 @@ func transferResponse(timer signal.ActivityTimer, session *encoding.ServerSessio } } - if err := buf.PipeUntilEOF(timer, mergeReader, bodyWriter); err != nil { + if err := buf.PipeUntilEOF(timer, reader, bodyWriter); err != nil { return err }