From ef12d5efbca2e5f83d370a80085cc6c3be36f85a Mon Sep 17 00:00:00 2001 From: Andriy Lysnevych Date: Fri, 7 Feb 2025 12:45:39 +0200 Subject: [PATCH] Clear potential connections if a connection succeeded --- .../p2p-media-loader-core/src/p2p/tracker-client.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/p2p-media-loader-core/src/p2p/tracker-client.ts b/packages/p2p-media-loader-core/src/p2p/tracker-client.ts index 602c2563..c76de57f 100644 --- a/packages/p2p-media-loader-core/src/p2p/tracker-client.ts +++ b/packages/p2p-media-loader-core/src/p2p/tracker-client.ts @@ -97,23 +97,29 @@ export class P2PTrackerClient { ) => { const itemId = Peer.getPeerIdFromConnection(peerConnection); let peerItem = this._peers.get(itemId); + if (peerItem?.peer) { peerConnection.destroy(); return; - } else if (!peerItem) { + } + + if (!peerItem) { peerItem = { potentialConnections: new Set() }; peerConnection.idUtf8 = itemId; - peerItem.potentialConnections.add(peerConnection); this._peers.set(itemId, peerItem); } + peerItem.potentialConnections.add(peerConnection); + peerConnection.on("connect", () => { if (peerItem.peer) return; for (const connection of peerItem.potentialConnections) { if (connection !== peerConnection) connection.destroy(); } + peerItem.potentialConnections.clear(); + peerItem.peer = new Peer( peerConnection, {