Unwrap syscall error and check

Signed-off-by: Derek McGowan <derek@mcg.dev>
This commit is contained in:
Derek McGowan 2022-03-14 18:56:48 -07:00
parent 6f33ccebed
commit 80efa545d4

View File

@ -22,7 +22,6 @@ import (
"fmt" "fmt"
"io" "io"
"net" "net"
"os"
"strings" "strings"
"sync" "sync"
"syscall" "syscall"
@ -416,11 +415,9 @@ func filterCloseErr(err error) error {
default: default:
// if we have an epipe on a write or econnreset on a read , we cast to errclosed // if we have an epipe on a write or econnreset on a read , we cast to errclosed
var oerr *net.OpError var oerr *net.OpError
if errors.As(err, &oerr) && (oerr.Op == "write" || oerr.Op == "read") { if errors.As(err, &oerr) {
serr, sok := oerr.Err.(*os.SyscallError) if (oerr.Op == "write" && errors.Is(err, syscall.EPIPE)) ||
if sok && ((serr.Err == syscall.EPIPE && oerr.Op == "write") || (oerr.Op == "read" && errors.Is(err, syscall.ECONNRESET)) {
(serr.Err == syscall.ECONNRESET && oerr.Op == "read")) {
return ErrClosed return ErrClosed
} }
} }