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, {