From 61d385897a6611f10d51564d7db4c03037b8a975 Mon Sep 17 00:00:00 2001 From: Derrick Hammer Date: Mon, 20 Feb 2023 17:33:40 -0500 Subject: [PATCH] *If we have no peers, hook on when we have a peer and recurse *If we have a peer, loop over the peer list, and see if we have any syncable peers. If not, loop again, and hook on the peers open event --- src/index.ts | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/index.ts b/src/index.ts index 8299f85..df10d55 100644 --- a/src/index.ts +++ b/src/index.ts @@ -21,12 +21,32 @@ let proxy: HandshakeProxy; function resolveWithPeers(resolve: Function) { if (!proxy.node.pool.peers.head()) { - proxy.node.pool.once("peer", () => { - resolve(null); + proxy.node.pool.on("peer", () => { + resolveWithPeers(resolve); }); return; } + let syncable = false; + + for (let peer = proxy.node.pool.peers.head(); peer; peer = peer.next) { + if (proxy.node.pool.isSyncable(peer)) { + syncable = true; + break; + } + } + + if (!syncable) { + for (let peer = proxy.node.pool.peers.head(); peer; peer = peer.next) { + const listener = () => { + peer.off("open", listener); + resolve(); + }; + peer.on("open", listener); + } + return; + } + return resolve(null); }