diff --git a/go.mod b/go.mod index 05c8ace8f5..3129807584 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/libp2p/go-eventbus v0.0.2 github.com/libp2p/go-libp2p-autonat v0.1.0 github.com/libp2p/go-libp2p-blankhost v0.1.3 - github.com/libp2p/go-libp2p-circuit v0.1.0 + github.com/libp2p/go-libp2p-circuit v0.1.1 github.com/libp2p/go-libp2p-core v0.0.6 github.com/libp2p/go-libp2p-discovery v0.1.0 github.com/libp2p/go-libp2p-loggables v0.1.0 diff --git a/go.sum b/go.sum index b417df666f..de79255fd6 100644 --- a/go.sum +++ b/go.sum @@ -116,8 +116,8 @@ github.com/libp2p/go-libp2p-autonat v0.1.0/go.mod h1:1tLf2yXxiE/oKGtDwPYWTSYG3Pt github.com/libp2p/go-libp2p-blankhost v0.1.1/go.mod h1:pf2fvdLJPsC1FsVrNP3DUUvMzUts2dsLLBEpo1vW1ro= github.com/libp2p/go-libp2p-blankhost v0.1.3 h1:0KycuXvPDhmehw0ASsg+s1o3IfXgCUDqfzAl94KEBOg= github.com/libp2p/go-libp2p-blankhost v0.1.3/go.mod h1:KML1//wiKR8vuuJO0y3LUd1uLv+tlkGTAr3jC0S5cLg= -github.com/libp2p/go-libp2p-circuit v0.1.0 h1:eniLL3Y9aq/sryfyV1IAHj5rlvuyj3b7iz8tSiZpdhY= -github.com/libp2p/go-libp2p-circuit v0.1.0/go.mod h1:Ahq4cY3V9VJcHcn1SBXjr78AbFkZeIRmfunbA7pmFh8= +github.com/libp2p/go-libp2p-circuit v0.1.1 h1:eopfG9fAg6rEHWQO1TSrLosXDgYbbbu/RTva/tBANus= +github.com/libp2p/go-libp2p-circuit v0.1.1/go.mod h1:Ahq4cY3V9VJcHcn1SBXjr78AbFkZeIRmfunbA7pmFh8= github.com/libp2p/go-libp2p-core v0.0.1/go.mod h1:g/VxnTZ/1ygHxH3dKok7Vno1VfpvGcGip57wjTU4fco= github.com/libp2p/go-libp2p-core v0.0.4/go.mod h1:jyuCQP356gzfCFtRKyvAbNkyeuxb7OlyhWZ3nls5d2I= github.com/libp2p/go-libp2p-core v0.0.6 h1:SsYhfWJ47vLP1Rd9/0hqEm/W/PlFbC/3YLZyLCcvo1w= diff --git a/p2p/host/relay/autorelay.go b/p2p/host/relay/autorelay.go index ac381ac62f..abab272e36 100644 --- a/p2p/host/relay/autorelay.go +++ b/p2p/host/relay/autorelay.go @@ -12,7 +12,7 @@ import ( "github.com/libp2p/go-libp2p-core/routing" autonat "github.com/libp2p/go-libp2p-autonat" - _ "github.com/libp2p/go-libp2p-circuit" + circuit "github.com/libp2p/go-libp2p-circuit" discovery "github.com/libp2p/go-libp2p-discovery" basic "github.com/libp2p/go-libp2p/p2p/host/basic" @@ -197,6 +197,17 @@ func (ar *AutoRelay) tryRelay(ctx context.Context, pi peer.AddrInfo) bool { return false } + ok, err := circuit.CanHop(ctx, ar.host, pi.ID) + if err != nil { + log.Debugf("error querying relay: %s", err.Error()) + return false + } + + if !ok { + // not a hop relay + return false + } + ar.mx.Lock() defer ar.mx.Unlock()