client.go | 10 ++++++++++ diff --git a/client.go b/client.go index 50f2136bd26e0df217299d357710771dd534d212..72782463ee948d57367e60f519f62dbd9743d1cb 100644 --- a/client.go +++ b/client.go @@ -492,6 +492,16 @@ if err != nil { return } n, err = pc.Conn.Read(b) + if err != nil { + if opError, ok := err.(*net.OpError); ok && opError.Op == "read" && opError.Err == syscall.ECONNRESET { + err = io.EOF + } else if netErr, ok := err.(net.Error); ok && netErr.Timeout() { + if n != 0 { + panic(n) + } + err = io.EOF + } + } return }