package moxio import ( "errors" "net" "syscall" ) // In separate file because of import of syscall. // IsClosed returns whether i/o failed, typically because the connection is closed // or otherwise cannot be used for further i/o. // // Used to prevent error logging for connections that are closed. func IsClosed(err error) bool { return errors.Is(err, net.ErrClosed) || errors.Is(err, syscall.EPIPE) || errors.Is(err, syscall.ECONNRESET) || isRemoteTLSError(err) } // A remote TLS client can send a message indicating failure, this makes it back to // us as a write error. func isRemoteTLSError(err error) bool { var netErr *net.OpError return errors.As(err, &netErr) && netErr.Op == "remote error" }