From be9a8e7afbb6fe7ee6afa3361ffd0975a347a2c8 Mon Sep 17 00:00:00 2001 From: Daniel N <2color@users.noreply.github.com> Date: Wed, 14 Aug 2024 14:29:47 +0200 Subject: [PATCH] fix: check connectedness in separate function --- dht.go | 6 ++---- dht_filters.go | 5 +++++ fullrt/dht.go | 9 +++------ query.go | 3 +-- routing.go | 7 ++----- 5 files changed, 13 insertions(+), 17 deletions(-) diff --git a/dht.go b/dht.go index bd28a256d..824c17e55 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 27e9e8d9a..c56c3ca15 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 91e519aee..3383b27e2 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 7c01a2af2..f7e10e9b3 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 83f095354..bba9bdb15 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 }