From 89aef893e6f3bc1c7abe7be89dc165b14338a7e2 Mon Sep 17 00:00:00 2001 From: vyzo Date: Sat, 20 Oct 2018 21:01:57 +0300 Subject: [PATCH] don't adveretise unspecific relay addrs in RelayHost --- p2p/host/relay/relay.go | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/p2p/host/relay/relay.go b/p2p/host/relay/relay.go index 95b5079..17aa09c 100644 --- a/p2p/host/relay/relay.go +++ b/p2p/host/relay/relay.go @@ -3,21 +3,34 @@ package relay import ( "context" + basic "github.com/libp2p/go-libp2p/p2p/host/basic" + discovery "github.com/libp2p/go-libp2p-discovery" host "github.com/libp2p/go-libp2p-host" + ma "github.com/multiformats/go-multiaddr" ) // RelayHost is a Host that provides Relay services. type RelayHost struct { - host.Host + *basic.BasicHost advertise discovery.Advertiser + addrsF basic.AddrsFactory } // New constructs a new RelayHost -func NewRelayHost(ctx context.Context, host host.Host, advertise discovery.Advertiser) *RelayHost { - h := &RelayHost{Host: host, advertise: advertise} +func NewRelayHost(ctx context.Context, bhost *basic.BasicHost, advertise discovery.Advertiser) *RelayHost { + h := &RelayHost{ + BasicHost: bhost, + addrsF: bhost.AddrsFactory, + advertise: advertise, + } + bhost.AddrsFactory = h.hostAddrs discovery.Advertise(ctx, advertise, "/libp2p/relay") return h } +func (h *RelayHost) hostAddrs(addrs []ma.Multiaddr) []ma.Multiaddr { + return filterUnspecificRelay(h.addrsF(addrs)) +} + var _ host.Host = (*RelayHost)(nil) -- GitLab