Browse Source

Don't add same peer twice

Fixes #727
patch-2
Neil Booth 6 years ago
parent
commit
7c9c06e562
  1. 6
      electrumx/server/peers.py

6
electrumx/server/peers.py

@ -174,20 +174,20 @@ class PeerManager(object):
async def _note_peers(self, peers, limit=2, check_ports=False, source=None): async def _note_peers(self, peers, limit=2, check_ports=False, source=None):
'''Add a limited number of peers that are not already present.''' '''Add a limited number of peers that are not already present.'''
new_peers = [] new_peers = []
known = [] match_set = self.peers.copy()
for peer in peers: for peer in peers:
if not peer.is_public or (peer.is_tor and not self.proxy): if not peer.is_public or (peer.is_tor and not self.proxy):
continue continue
matches = peer.matches(self.peers) matches = peer.matches(match_set)
if matches: if matches:
known.append(peer)
if check_ports: if check_ports:
for match in matches: for match in matches:
if match.check_ports(peer): if match.check_ports(peer):
self.logger.info(f'ports changed for {peer}') self.logger.info(f'ports changed for {peer}')
match.retry_event.set() match.retry_event.set()
else: else:
match_set.add(peer)
new_peers.append(peer) new_peers.append(peer)
if new_peers: if new_peers:

Loading…
Cancel
Save