From eebc09bee588d0b99f7f70d70ff969de26a75c0d Mon Sep 17 00:00:00 2001 From: Derrick Hammer Date: Mon, 20 Feb 2023 07:39:23 -0500 Subject: [PATCH] *Check and wait on peers on ready method *Check peer count on query method --- src/index.ts | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/index.ts b/src/index.ts index 1abc653..87e61fa 100644 --- a/src/index.ts +++ b/src/index.ts @@ -19,6 +19,17 @@ addHandler("query", handleQuery); let swarm; let proxy: HandshakeProxy; +function resolveWithPeers(resolve: Function) { + if (proxy.node.peers.list.size === 0) { + proxy.node.pool.once("peer", () => { + resolve(null); + }); + return; + } + + return resolve(null); +} + async function handlePresentSeed(aq: ActiveQuery) { swarm = createClient(); proxy = new HandshakeProxy({ swarm, listen: true }); @@ -34,19 +45,17 @@ async function handleReady(aq: ActiveQuery) { await new Promise((resolve): void => { if (proxy.node.chain.synced) { - return resolve(null); + return resolveWithPeers(resolve); } - proxy.node.pool.on("full", () => { - resolve(null); - }); + proxy.node.pool.on("full", resolveWithPeers); }); aq.respond(); } async function handleQuery(aq: ActiveQuery) { - if (!proxy.node.chain.synced) { + if (!proxy.node.chain.synced || proxy.node.peers.list.size === 0) { aq.reject("not ready"); return; }