From a1a2ea59d47a53100d92035bcd1c9ce98fe040ee Mon Sep 17 00:00:00 2001 From: ginuerzh Date: Thu, 18 Aug 2022 13:18:59 +0800 Subject: [PATCH] fix double copy in transport --- internal/net/transport.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/internal/net/transport.go b/internal/net/transport.go index 93674af..3d4a389 100644 --- a/internal/net/transport.go +++ b/internal/net/transport.go @@ -9,7 +9,7 @@ import ( ) func Transport(rw1, rw2 io.ReadWriter) error { - errc := make(chan error, 1) + errc := make(chan error, 2) go func() { errc <- copyBuffer(rw1, rw2) }() @@ -19,10 +19,16 @@ func Transport(rw1, rw2 io.ReadWriter) error { }() err := <-errc - if err != nil && err == io.EOF { - err = nil + err2 := <-errc + if err != nil && err != io.EOF { + return err } - return err + + if err2 != nil && err2 != io.EOF { + return err2 + } + + return nil } func copyBuffer(dst io.Writer, src io.Reader) error {