From 13e450678152e365df0bed0768807298d05ba314 Mon Sep 17 00:00:00 2001 From: Darien Raymond Date: Fri, 6 Jan 2017 11:59:51 +0100 Subject: [PATCH] better error handling in vmess inbound --- proxy/vmess/inbound/inbound.go | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/proxy/vmess/inbound/inbound.go b/proxy/vmess/inbound/inbound.go index 47036e04..ed117836 100644 --- a/proxy/vmess/inbound/inbound.go +++ b/proxy/vmess/inbound/inbound.go @@ -147,18 +147,24 @@ func transferResponse(session *encoding.ServerSession, request *protocol.Request bodyWriter := session.EncodeResponseBody(request, output) // Optimize for small response packet - if data, err := input.Read(); err == nil { - if err := bodyWriter.Write(data); err != nil { + data, err := input.Read() + if err != nil { + return err + } + + if err := bodyWriter.Write(data); err != nil { + return err + } + data.Release() + + if bufferedWriter, ok := output.(*bufio.BufferedWriter); ok { + if err := bufferedWriter.SetBuffered(false); err != nil { return err } + } - if bufferedWriter, ok := output.(*bufio.BufferedWriter); ok { - bufferedWriter.SetBuffered(false) - } - - if err := buf.PipeUntilEOF(input, bodyWriter); err != nil { - return err - } + if err := buf.PipeUntilEOF(input, bodyWriter); err != nil { + return err } if request.Option.Has(protocol.RequestOptionChunkStream) {