From 931b227618b42d05bc56a0ec5f2fdbbd01638325 Mon Sep 17 00:00:00 2001 From: Neil Booth Date: Wed, 8 Aug 2018 12:31:32 +0900 Subject: [PATCH] Verify a peer concurrently --- electrumx/server/peers.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/electrumx/server/peers.py b/electrumx/server/peers.py index 3bb208b..209353a 100644 --- a/electrumx/server/peers.py +++ b/electrumx/server/peers.py @@ -290,10 +290,15 @@ class PeerManager(object): peer.features['server_version'] = server_version ptuple = protocol_tuple(protocol_version) - # FIXME: make these concurrent with first exception preserved - await self._send_headers_subscribe(session, peer, ptuple) - await self._send_server_features(session, peer) - await self._send_peers_subscribe(session, peer) + # Do the rest concurrently + async with TaskGroup() as group: + await group.spawn(self._send_headers_subscribe(session, peer, + ptuple)) + await group.spawn(self._send_server_features(session, peer)) + await group.spawn(self._send_peers_subscribe(session, peer)) + # If any task errors out; bail + async for task in group: + task.result() async def _send_headers_subscribe(self, session, peer, ptuple): message = 'blockchain.headers.subscribe'