diff --git a/src/main/services/web-torrent-data.ts b/src/main/services/web-torrent-data.ts index 7d5ec34d..72f29be6 100644 --- a/src/main/services/web-torrent-data.ts +++ b/src/main/services/web-torrent-data.ts @@ -5,25 +5,34 @@ type WebTorrentHealthData = { peers: number; }; +const MILLISECONDS = 1000; +const SECONDS = 1.5; + export const webTorrentData = { async getSeedersAndPeers( magnet: string - ): Promise<{ seeders: number; peers: number }> { + ): Promise<{ seeders: number; peers: number } | null> { let peers = 0; let seeds = 0; let retry = 0; + let timeout = SECONDS * MILLISECONDS; - while (retry < 3 && (!peers || !seeds)) { + while (retry < 3) { try { const data: WebTorrentHealthData = await webTorrentHealth(magnet, { - timeout: 1500 * (retry + 1), + timeout, }); peers = data.peers; seeds = data.seeds; + + if (peers || seeds) break; } catch (e) { - retry++; + return null; } + + timeout *= 2; + retry++; } return { peers, seeders: seeds };