diff --git a/dht.go b/dht.go index bd28a256..824c17e5 100644 --- a/dht.go +++ b/dht.go @@ -737,8 +737,7 @@ func (dht *IpfsDHT) FindLocal(ctx context.Context, id peer.ID) peer.AddrInfo { _, span := internal.StartSpan(ctx, "IpfsDHT.FindLocal", trace.WithAttributes(attribute.Stringer("PeerID", id))) defer span.End() - connectedness := dht.host.Network().Connectedness(id) - if connectedness == network.Connected || connectedness == network.Limited { + if HasValidConnectedness(dht.host, id) { return dht.peerstore.PeerInfo(id) } return peer.AddrInfo{} @@ -927,8 +926,7 @@ func (dht *IpfsDHT) newContextWithLocalTags(ctx context.Context, extraTags ...ta func (dht *IpfsDHT) maybeAddAddrs(p peer.ID, addrs []ma.Multiaddr, ttl time.Duration) { // Don't add addresses for self or our connected peers. We have better ones. - connectedness := dht.host.Network().Connectedness(p) - if p == dht.self || connectedness == network.Connected || connectedness == network.Limited { + if p == dht.self || HasValidConnectedness(dht.host, p) { return } dht.peerstore.AddAddrs(p, dht.filterAddrs(addrs), ttl) diff --git a/dht_filters.go b/dht_filters.go index 27e9e8d9..c56c3ca1 100644 --- a/dht_filters.go +++ b/dht_filters.go @@ -238,3 +238,8 @@ func inAddrRange(ip net.IP, ipnets []*net.IPNet) bool { return false } + +func HasValidConnectedness(host host.Host, id peer.ID) bool { + connectedness := host.Network().Connectedness(id) + return connectedness == network.Connected || connectedness == network.Limited +} diff --git a/fullrt/dht.go b/fullrt/dht.go index 91e519ae..3383b27e 100644 --- a/fullrt/dht.go +++ b/fullrt/dht.go @@ -1459,8 +1459,7 @@ func (dht *FullRT) FindPeer(ctx context.Context, id peer.ID) (pi peer.AddrInfo, // Return peer information if we tried to dial the peer during the query or we are (or recently were) connected // to the peer. - connectedness := dht.h.Network().Connectedness(id) - if connectedness == network.Connected || connectedness == network.Limited { + if kaddht.HasValidConnectedness(dht.h, id) { return dht.h.Peerstore().PeerInfo(id), nil } @@ -1538,8 +1537,7 @@ func (dht *FullRT) getRecordFromDatastore(ctx context.Context, dskey ds.Key) (*r // FindLocal looks for a peer with a given ID connected to this dht and returns the peer and the table it was found in. func (dht *FullRT) FindLocal(id peer.ID) peer.AddrInfo { - connectedness := dht.h.Network().Connectedness(id) - if connectedness == network.Connected || connectedness == network.Limited { + if kaddht.HasValidConnectedness(dht.h, id) { return dht.h.Peerstore().PeerInfo(id) } return peer.AddrInfo{} @@ -1547,8 +1545,7 @@ func (dht *FullRT) FindLocal(id peer.ID) peer.AddrInfo { func (dht *FullRT) maybeAddAddrs(p peer.ID, addrs []multiaddr.Multiaddr, ttl time.Duration) { // Don't add addresses for self or our connected peers. We have better ones. - connectedness := dht.h.Network().Connectedness(p) - if p == dht.h.ID() || connectedness == network.Connected || connectedness == network.Limited { + if p == dht.h.ID() || kaddht.HasValidConnectedness(dht.h, p) { return } dht.h.Peerstore().AddAddrs(p, addrs, ttl) diff --git a/query.go b/query.go index 7c01a2af..f7e10e9b 100644 --- a/query.go +++ b/query.go @@ -8,7 +8,6 @@ import ( "sync" "time" - "github.com/libp2p/go-libp2p/core/network" "github.com/libp2p/go-libp2p/core/peer" pstore "github.com/libp2p/go-libp2p/core/peerstore" "github.com/libp2p/go-libp2p/core/routing" @@ -530,7 +529,7 @@ func (dht *IpfsDHT) dialPeer(ctx context.Context, p peer.ID) error { defer span.End() // short-circuit if we're already connected. - if dht.host.Network().Connectedness(p) == network.Connected { + if HasValidConnectedness(dht.host, p) { return nil } diff --git a/routing.go b/routing.go index 83f09535..bba9bdb1 100644 --- a/routing.go +++ b/routing.go @@ -8,7 +8,6 @@ import ( "sync" "time" - "github.com/libp2p/go-libp2p/core/network" "github.com/libp2p/go-libp2p/core/peer" "github.com/libp2p/go-libp2p/core/peerstore" "github.com/libp2p/go-libp2p/core/routing" @@ -664,8 +663,7 @@ func (dht *IpfsDHT) FindPeer(ctx context.Context, id peer.ID) (pi peer.AddrInfo, return peers, err }, func(*qpeerset.QueryPeerset) bool { - connectedness := dht.host.Network().Connectedness(id) - return connectedness == network.Connected || connectedness == network.Limited + return HasValidConnectedness(dht.host, id) }, ) @@ -686,8 +684,7 @@ func (dht *IpfsDHT) FindPeer(ctx context.Context, id peer.ID) (pi peer.AddrInfo, // Return peer information if we tried to dial the peer during the query or we are (or recently were) connected // to the peer. - connectedness := dht.host.Network().Connectedness(id) - if dialedPeerDuringQuery || connectedness == network.Connected || connectedness == network.Limited { + if dialedPeerDuringQuery || HasValidConnectedness(dht.host, id) { return dht.peerstore.PeerInfo(id), nil }