From f4bb4313a1b2649a373985c425a1681a986b6da7 Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Mon, 4 Nov 2019 19:43:46 +0000 Subject: [PATCH] feat(dial): implement the Timeout interface on dial errors --- dial_error.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/dial_error.go b/dial_error.go index d217961..f298634 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) -- GitLab