Skip to content

Commit 7dc6403

Browse files
committed
Connect to unsynced peers, and trinity peers
Trinity peers were not communicating DAO headers during handshake, so trinity would not connect to another trinity node. Solution was to immediately add peer to pool during boot, and then kick it back out if it fails the DAO check. We were previously failing any peer who couldn't answer with the DAO fork header. That means that unsynced peers would be rejected. Modified to accept unsynced peers for now.
1 parent a37f26c commit 7dc6403

File tree

2 files changed

+15
-11
lines changed

2 files changed

+15
-11
lines changed

p2p/peer_pool.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -242,12 +242,16 @@ def unsubscribe(self, subscriber: PeerSubscriber) -> None:
242242
async def start_peer(self, peer: BasePeer) -> None:
243243
self.run_child_service(peer)
244244
await self.wait(peer.events.started.wait(), timeout=1)
245+
if peer.is_operational:
246+
self._add_peer(peer, ())
247+
else:
248+
self.logger.debug("%s was cancelled immediately, not adding to pool", peer)
249+
245250
try:
246-
with peer.collect_sub_proto_messages() as buffer:
247-
await self.wait(
248-
peer.boot_manager.events.finished.wait(),
249-
timeout=self._peer_boot_timeout
250-
)
251+
await self.wait(
252+
peer.boot_manager.events.finished.wait(),
253+
timeout=self._peer_boot_timeout
254+
)
251255
except TimeoutError as err:
252256
self.logger.debug('Timout waiting for peer to boot: %s', err)
253257
await peer.disconnect(DisconnectReason.timeout)
@@ -256,10 +260,8 @@ async def start_peer(self, peer: BasePeer) -> None:
256260
await self.connection_tracker.record_failure(peer.remote, err)
257261
raise
258262
else:
259-
if peer.is_operational:
260-
self._add_peer(peer, buffer.get_messages())
261-
else:
262-
self.logger.debug('%s disconnected during boot-up, not adding to pool', peer)
263+
if not peer.is_operational:
264+
self.logger.debug('%s disconnected during boot-up, dropped from pool', peer)
263265

264266
def _add_peer(self,
265267
peer: BasePeer,

trinity/protocol/common/boot.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,11 @@ async def ensure_same_side_on_dao_fork(self) -> None:
6262
) from err
6363

6464
if len(headers) != 2:
65-
raise DAOForkCheckFailure(
66-
f"{self.peer} failed to return DAO fork check headers"
65+
self.logger.debug(
66+
f"{self.peer} returned only {headers!r} at DAO fork. "
67+
"Assuming peer is syncing, for now..."
6768
)
69+
return
6870
else:
6971
parent, header = headers
7072

0 commit comments

Comments
 (0)