Skip to content

Commit 53fb5ad

Browse files
committed
fix: treat limited connections as also connectable
1 parent 4667e81 commit 53fb5ad

File tree

3 files changed

+12
-7
lines changed

3 files changed

+12
-7
lines changed

dht.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -737,7 +737,8 @@ func (dht *IpfsDHT) FindLocal(ctx context.Context, id peer.ID) peer.AddrInfo {
737737
_, span := internal.StartSpan(ctx, "IpfsDHT.FindLocal", trace.WithAttributes(attribute.Stringer("PeerID", id)))
738738
defer span.End()
739739

740-
if dht.host.Network().Connectedness(id) == network.Connected {
740+
connectedness := dht.host.Network().Connectedness(id)
741+
if connectedness == network.Connected || connectedness == network.Limited {
741742
return dht.peerstore.PeerInfo(id)
742743
}
743744
return peer.AddrInfo{}
@@ -926,7 +927,8 @@ func (dht *IpfsDHT) newContextWithLocalTags(ctx context.Context, extraTags ...ta
926927

927928
func (dht *IpfsDHT) maybeAddAddrs(p peer.ID, addrs []ma.Multiaddr, ttl time.Duration) {
928929
// Don't add addresses for self or our connected peers. We have better ones.
929-
if p == dht.self || dht.host.Network().Connectedness(p) == network.Connected {
930+
connectedness := dht.host.Network().Connectedness(p)
931+
if p == dht.self || connectedness == network.Connected || connectedness == network.Limited {
930932
return
931933
}
932934
dht.peerstore.AddAddrs(p, dht.filterAddrs(addrs), ttl)

fullrt/dht.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1460,7 +1460,7 @@ func (dht *FullRT) FindPeer(ctx context.Context, id peer.ID) (pi peer.AddrInfo,
14601460
// Return peer information if we tried to dial the peer during the query or we are (or recently were) connected
14611461
// to the peer.
14621462
connectedness := dht.h.Network().Connectedness(id)
1463-
if connectedness == network.Connected {
1463+
if connectedness == network.Connected || connectedness == network.Limited {
14641464
return dht.h.Peerstore().PeerInfo(id), nil
14651465
}
14661466

@@ -1538,15 +1538,17 @@ func (dht *FullRT) getRecordFromDatastore(ctx context.Context, dskey ds.Key) (*r
15381538

15391539
// FindLocal looks for a peer with a given ID connected to this dht and returns the peer and the table it was found in.
15401540
func (dht *FullRT) FindLocal(id peer.ID) peer.AddrInfo {
1541-
if dht.h.Network().Connectedness(id) == network.Connected {
1541+
connectedness := dht.h.Network().Connectedness(id)
1542+
if connectedness == network.Connected || connectedness == network.Limited {
15421543
return dht.h.Peerstore().PeerInfo(id)
15431544
}
15441545
return peer.AddrInfo{}
15451546
}
15461547

15471548
func (dht *FullRT) maybeAddAddrs(p peer.ID, addrs []multiaddr.Multiaddr, ttl time.Duration) {
15481549
// Don't add addresses for self or our connected peers. We have better ones.
1549-
if p == dht.h.ID() || dht.h.Network().Connectedness(p) == network.Connected {
1550+
connectedness := dht.h.Network().Connectedness(p)
1551+
if p == dht.h.ID() || connectedness == network.Connected || connectedness == network.Limited {
15501552
return
15511553
}
15521554
dht.h.Peerstore().AddAddrs(p, addrs, ttl)

routing.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -664,7 +664,8 @@ func (dht *IpfsDHT) FindPeer(ctx context.Context, id peer.ID) (pi peer.AddrInfo,
664664
return peers, err
665665
},
666666
func(*qpeerset.QueryPeerset) bool {
667-
return dht.host.Network().Connectedness(id) == network.Connected
667+
connectedness := dht.host.Network().Connectedness(id)
668+
return connectedness == network.Connected || connectedness == network.Limited
668669
},
669670
)
670671

@@ -686,7 +687,7 @@ func (dht *IpfsDHT) FindPeer(ctx context.Context, id peer.ID) (pi peer.AddrInfo,
686687
// Return peer information if we tried to dial the peer during the query or we are (or recently were) connected
687688
// to the peer.
688689
connectedness := dht.host.Network().Connectedness(id)
689-
if dialedPeerDuringQuery || connectedness == network.Connected {
690+
if dialedPeerDuringQuery || connectedness == network.Connected || connectedness == network.Limited {
690691
return dht.peerstore.PeerInfo(id), nil
691692
}
692693

0 commit comments

Comments
 (0)