From cdea39ff9589ae7b342153ff3de309b8d2b22f7b Mon Sep 17 00:00:00 2001 From: V2Ray Date: Fri, 9 Oct 2015 13:07:42 +0200 Subject: [PATCH] Try writing again when there are some bytes left --- common/net/transport.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/common/net/transport.go b/common/net/transport.go index 98e2ab5e..5f334eff 100644 --- a/common/net/transport.go +++ b/common/net/transport.go @@ -33,7 +33,10 @@ func ReaderToChan(stream chan<- *alloc.Buffer, reader io.Reader) error { // ChanToWriter dumps all content from a given chan to a writer until the chan is closed. func ChanToWriter(writer io.Writer, stream <-chan *alloc.Buffer) error { for buffer := range stream { - _, err := writer.Write(buffer.Value) + nBytes, err := writer.Write(buffer.Value) + if nBytes < buffer.Len() { + _, err = writer.Write(buffer.Value[nBytes:]) + } buffer.Release() if err != nil { return err