Make connectedPeers more accurate

This commit is contained in:
Ludovic Chenut 2022-12-13 16:08:26 +01:00
parent 5bf4fa8953
commit bc0aa57a6b
No known key found for this signature in database
GPG Key ID: D9A59B1907F1D50C

View File

@ -59,7 +59,7 @@ method innerRun(self: AutoRelay, switch: Switch) {.async, gcsafe.} =
# Remove peers that failed # Remove peers that failed
var peersToRemove: seq[PeerId] var peersToRemove: seq[PeerId]
for k, v in self.peers: for k, v in self.peers:
if v.failed() or v.cancelled(): if v.finished():
peersToRemove.add(k) peersToRemove.add(k)
for k in peersToRemove: for k in peersToRemove:
self.peers.del(k) self.peers.del(k)
@ -69,10 +69,11 @@ method innerRun(self: AutoRelay, switch: Switch) {.async, gcsafe.} =
# Get all connected peers # Get all connected peers
let rng = newRng() let rng = newRng()
var connectedPeers = switch.connectedPeers(Direction.Out) var connectedPeers = switch.connectedPeers(Direction.Out)
connectedPeers.keepItIf(RelayV2HopCodec in switch.peerStore[ProtoBook][it]) connectedPeers.keepItIf(RelayV2HopCodec in switch.peerStore[ProtoBook][it] or
it notin self.peers.keys())
rng.shuffle(connectedPeers) rng.shuffle(connectedPeers)
for relayPid in switch.connectedPeers(Direction.Out): for relayPid in connectedPeers:
if self.peers.len() >= self.npeers: if self.peers.len() >= self.npeers:
break break
if RelayV2HopCodec in switch.peerStore[ProtoBook][relayPid]: if RelayV2HopCodec in switch.peerStore[ProtoBook][relayPid]: