package netutil import ( "errors" "io" "net" "syscall" "git.maze.io/maze/conduit/logger" ) type ConnCloser struct { net.Conn Closer func() error } func (c *ConnCloser) Close() error { if c.Closer == nil { return c.Conn.Close() } return c.Closer() } // IsClosing checks if the error is because the connection was closed. func IsClosing(err error) bool { if errors.Is(err, io.EOF) || errors.Is(err, io.ErrClosedPipe) || errors.Is(err, syscall.ECONNRESET) { return true } if err, ok := err.(net.Error); ok && err.Timeout() { return true } if err, ok := err.(*net.OpError); ok && err.Op == "close" { return true } logger.Debugf("not a closing error %T: %#+v", err, err) return false }