From ee757308c600ed23ccbd978bc99d6126b25c58a4 Mon Sep 17 00:00:00 2001 From: Hanno Cornelius <68783915+jm-clius@users.noreply.github.com> Date: Tue, 1 Jun 2021 09:55:46 +0200 Subject: [PATCH] Fix: No keep-alive for backoff peers (#584) --- waku/v2/protocol/waku_relay.nim | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/waku/v2/protocol/waku_relay.nim b/waku/v2/protocol/waku_relay.nim index 650e57499..f5d3ff256 100644 --- a/waku/v2/protocol/waku_relay.nim +++ b/waku/v2/protocol/waku_relay.nim @@ -28,9 +28,15 @@ proc keepAlive*(w: WakuRelay) {.async.} = for topic in w.topics.keys: trace "Keepalive on topic", topic=topic - let mpeers = w.mesh.getOrDefault(topic) + let + # Mesh peers for topic + mpeers = toSeq(w.mesh.getOrDefault(topic)) + # Peers we're backing off from on topic + backoffPeers = w.backingOff.getOrDefault(topic) + # Only keep peers alive that we're not backing off from + keepAlivePeers = mpeers.filterIt(not backoffPeers.hasKey(it.peerId)) - w.broadcast(toSeq(mpeers), RPCMsg(control: some(ControlMessage(graft: @[ControlGraft(topicID: topic)])))) + w.broadcast(keepAlivePeers, RPCMsg(control: some(ControlMessage(graft: @[ControlGraft(topicID: topic)])))) await sleepAsync(DefaultKeepAlive)