diff --git a/dial_error.go b/dial_error.go index d21796172fc05e099ab728045f9749304234a29a..f2986348bf9f67069db37f518aed43dd88f2057e 100644 --- a/dial_error.go +++ b/dial_error.go @@ -2,6 +2,7 @@ package swarm import ( "fmt" + "os" "strings" "github.com/libp2p/go-libp2p-core/peer" @@ -20,6 +21,10 @@ type DialError struct { Skipped int } +func (e *DialError) Timeout() bool { + return os.IsTimeout(e.Cause) +} + func (e *DialError) recordErr(addr ma.Multiaddr, err error) { if len(e.DialErrors) >= maxDialDialErrors { e.Skipped++ @@ -48,11 +53,7 @@ func (e *DialError) Error() string { // Unwrap implements https://godoc.org/golang.org/x/xerrors#Wrapper. func (e *DialError) Unwrap() error { - // If we have a context error, that's the "ultimate" error. - if e.Cause != nil { - return e.Cause - } - return nil + return e.Cause } var _ error = (*DialError)(nil)