mox/moxio/isclosed.go
Mechiel Lukkien cb229cb6cf
mox!
2023-01-30 14:27:06 +01:00

24 lines
713 B
Go

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"
}