From 404dc67e831ea2d2bb4ae3a9b23e35f9691bd501 Mon Sep 17 00:00:00 2001 From: NIC619 Date: Thu, 18 Jul 2019 19:39:01 +0800 Subject: [PATCH] Fix: prevent selecting peers from topic not in peer topics --- libp2p/pubsub/gossipsub.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/libp2p/pubsub/gossipsub.py b/libp2p/pubsub/gossipsub.py index 360143ae..39bd8e3d 100644 --- a/libp2p/pubsub/gossipsub.py +++ b/libp2p/pubsub/gossipsub.py @@ -191,15 +191,16 @@ class GossipSub(IPubsubRouter): # There are less than D peers (let this number be x) # in the fanout for a topic (or the topic is not in the fanout). # Selects the remaining number of peers (D-x) from peers.gossipsub[topic]. - gossipsub_peers_in_topic = [peer for peer in self.pubsub.peer_topics[topic] - if peer in self.peers_gossipsub] - selected_peers = \ - GossipSub.select_from_minus(self.degree - fanout_size, - gossipsub_peers_in_topic, - fanout_peers) + if topic in self.pubsub.peer_topics: + gossipsub_peers_in_topic = [peer for peer in self.pubsub.peer_topics[topic] + if peer in self.peers_gossipsub] + selected_peers = \ + GossipSub.select_from_minus(self.degree - fanout_size, + gossipsub_peers_in_topic, + fanout_peers) - # Combine fanout peers with selected peers - fanout_peers += selected_peers + # Combine fanout peers with selected peers + fanout_peers += selected_peers # Add fanout peers to mesh and notifies them with a GRAFT(topic) control message. for peer in fanout_peers: