Merge pull request #53 from fuweid/me-errclosed-for-read-reset-connection

return ErrClosed if read: connection reset by peer
This commit is contained in:
Michael Crosby 2019-10-23 10:06:47 -04:00 committed by GitHub
commit 7a6a229037
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -338,9 +338,12 @@ func filterCloseErr(err error) error {
case strings.Contains(err.Error(), "use of closed network connection"): case strings.Contains(err.Error(), "use of closed network connection"):
return ErrClosed return ErrClosed
default: default:
// if we have an epipe on a write, we cast to errclosed // if we have an epipe on a write or econnreset on a read , we cast to errclosed
if oerr, ok := err.(*net.OpError); ok && oerr.Op == "write" { if oerr, ok := err.(*net.OpError); ok && (oerr.Op == "write" || oerr.Op == "read") {
if serr, ok := oerr.Err.(*os.SyscallError); ok && serr.Err == syscall.EPIPE { serr, sok := oerr.Err.(*os.SyscallError)
if sok && ((serr.Err == syscall.EPIPE && oerr.Op == "write") ||
(serr.Err == syscall.ECONNRESET && oerr.Op == "read")) {
return ErrClosed return ErrClosed
} }
} }