From a9fa07fd7307295c99a45fe0ab0032a19ab55dbd Mon Sep 17 00:00:00 2001 From: Rolf Neugebauer Date: Fri, 10 Jun 2016 16:05:14 +0100 Subject: [PATCH] proxy: fix handling of CloseRead/CloseWrite for TCP port proxy Signed-off-by: Rolf Neugebauer --- alpine/packages/proxy/libproxy/tcp_proxy.go | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/alpine/packages/proxy/libproxy/tcp_proxy.go b/alpine/packages/proxy/libproxy/tcp_proxy.go index 393c19647..758918ed4 100644 --- a/alpine/packages/proxy/libproxy/tcp_proxy.go +++ b/alpine/packages/proxy/libproxy/tcp_proxy.go @@ -3,7 +3,6 @@ package libproxy import ( "io" "net" - "syscall" "github.com/Sirupsen/logrus" ) @@ -47,13 +46,16 @@ func HandleTCPConnection(client Conn, backendAddr *net.TCPAddr, quit chan bool) var broker = func(to, from Conn) { written, err := io.Copy(to, from) if err != nil { - // If the socket we are writing to is shutdown with - // SHUT_WR, forward it to the other end of the pipe: - if err, ok := err.(*net.OpError); ok && err.Err == syscall.EPIPE { - from.CloseWrite() - } + logrus.Println("error copying:", err) + } + err = from.CloseRead() + if err != nil { + logrus.Println("error CloseRead from:", err) + } + err = to.CloseWrite() + if err != nil { + logrus.Println("error CloseWrite to:", err) } - to.CloseRead() event <- written }