From 74c5c3f81704ca5fdc81531bb15853606315c022 Mon Sep 17 00:00:00 2001 From: Neil Booth Date: Fri, 20 Jul 2018 18:57:43 +0800 Subject: [PATCH] Don't accept onion peers if we have no proxy --- docs/changelog.rst | 1 + electrumx/server/peers.py | 10 ++++------ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 03150a2..5852dae 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -14,6 +14,7 @@ Version 1.6.1 (in progress) ============================ * cleaner shutdown process with clear guarantees +* onion peers are ignored if no tor proxy is available * add Motion coin (ocruzv) Version 1.6 (19 July 2018) diff --git a/electrumx/server/peers.py b/electrumx/server/peers.py index 2d2384f..e356d70 100644 --- a/electrumx/server/peers.py +++ b/electrumx/server/peers.py @@ -334,8 +334,9 @@ class PeerManager(object): retry = False new_peers = [] for peer in peers: - if not peer.is_public: + if not peer.is_public or (peer.is_tor and not self.proxy): continue + matches = peer.matches(self.peers) if not matches: new_peers.append(peer) @@ -499,16 +500,16 @@ class PeerManager(object): 3) Retrying old peers at regular intervals. ''' self.import_peers() - await self.maybe_detect_proxy() try: while True: + await self.maybe_detect_proxy() + await self.retry_peers() timeout = self.loop.call_later(WAKEUP_SECS, self.retry_event.set) await self.retry_event.wait() self.retry_event.clear() timeout.cancel() - await self.retry_peers() finally: for session in list(PeerSession.sessions): session.abort() @@ -537,9 +538,6 @@ class PeerManager(object): peers = [peer for peer in self.peers if should_retry(peer)] - if self.env.force_proxy or any(peer.is_tor for peer in peers): - await self.maybe_detect_proxy() - for peer in peers: peer.try_count += 1 pairs = peer.connection_port_pairs()