From 344762820c51e99e69c2cd5acde269fddf98a16b Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Fri, 24 Feb 2023 09:34:19 -0300 Subject: [PATCH] handle connection failure on pool according to @chmac. fixes https://github.com/nbd-wtf/nostr-tools/issues/130 --- pool.ts | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/pool.ts b/pool.ts index 66e0dcb..9ac91b3 100644 --- a/pool.ts +++ b/pool.ts @@ -13,10 +13,10 @@ export class SimplePool { } close(relays: string[]): void { - relays.map(url => { - let relay = this._conn[normalizeURL(url)] - if (relay) relay.close() - }) + relays.map(url => { + let relay = this._conn[normalizeURL(url)] + if (relay) relay.close() + }) } async ensureRelay(url: string): Promise { @@ -54,7 +54,13 @@ export class SimplePool { }, 2400) relays.forEach(async relay => { - let r = await this.ensureRelay(relay) + let r + try { + r = await this.ensureRelay(relay) + } catch (err) { + handleEose() + return + } if (!r) return let s = r.sub(filters, modifiedOpts) s.on('event', (event: Event) => { @@ -63,14 +69,17 @@ export class SimplePool { }) s.on('eose', () => { if (eoseSent) return + handleEose() + }) + subs.push(s) + function handleEose() { eosesMissing-- if (eosesMissing === 0) { clearTimeout(eoseTimeout) for (let cb of eoseListeners.values()) cb() } - }) - subs.push(s) + } }) let greaterSub: Sub = {