diff --git a/package.json b/package.json index 78820120..48ca92d1 100644 --- a/package.json +++ b/package.json @@ -135,6 +135,8 @@ "it-stream-types": "^1.0.4", "it-take": "^1.0.2", "it-to-buffer": "^2.0.2", + "@libp2p/tracked-map": "^1.0.4", + "it-pair": "^2.0.2", "merge-options": "^3.0.4", "mortice": "^3.0.0", "multiformats": "^9.6.3", diff --git a/src/connection-manager/index.ts b/src/connection-manager/index.ts index ad165d87..1bfb2f06 100644 --- a/src/connection-manager/index.ts +++ b/src/connection-manager/index.ts @@ -267,8 +267,6 @@ export class DefaultConnectionManager extends EventEmitter('peer:connect', { detail: connection })) - if (storedConns != null) { storedConns.push(connection) } else { @@ -284,6 +282,7 @@ export class DefaultConnectionManager extends EventEmitter('peer:connect', { detail: connection })) } /** diff --git a/test/dialing/direct.spec.ts b/test/dialing/direct.spec.ts index fb2f978d..66430cd5 100644 --- a/test/dialing/direct.spec.ts +++ b/test/dialing/direct.spec.ts @@ -29,6 +29,7 @@ import { createFromJSON } from '@libp2p/peer-id-factory' import Peers from '../fixtures/peers.js' import { MULTIADDRS_WEBSOCKETS } from '../fixtures/browser.js' import type { PeerId } from '@libp2p/interfaces/peer-id' +import { pEvent } from 'p-event' const unsupportedAddr = new Multiaddr('/ip4/127.0.0.1/tcp/9999') @@ -430,21 +431,15 @@ describe('libp2p.dialer (direct, WebSockets)', () => { const identifySpy = sinon.spy(libp2p.identifyService, 'identify') const protobookSetSpy = sinon.spy(libp2p.components.getPeerStore().protoBook, 'set') - const connectionPromise = pDefer() + const connectionPromise = pEvent(libp2p.connectionManager, 'peer:connect') await libp2p.start() - libp2p.components.getUpgrader().addEventListener('connection', () => { - connectionPromise.resolve() - }, { - once: true - }) - const connection = await libp2p.dial(MULTIADDRS_WEBSOCKETS[0]) expect(connection).to.exist() // Wait for connection event to be emitted - await connectionPromise.promise + await connectionPromise expect(identifySpy.callCount).to.equal(1) await identifySpy.firstCall.returnValue diff --git a/test/identify/index.spec.ts b/test/identify/index.spec.ts index c1ae112a..9a2ab972 100644 --- a/test/identify/index.spec.ts +++ b/test/identify/index.spec.ts @@ -496,9 +496,12 @@ describe('Identify', () => { const identityServiceIdentifySpy = sinon.spy(libp2p.identifyService, 'identify') const identityServicePushSpy = sinon.spy(libp2p.identifyService, 'push') - + const connectionPromise = pEvent(libp2p.connectionManager, 'peer:connect') const connection = await libp2p.dial(remoteAddr) + expect(connection).to.exist() + // Wait for connection event to be emitted + await connectionPromise // Wait for identify to finish await identityServiceIdentifySpy.firstCall.returnValue @@ -560,9 +563,12 @@ describe('Identify', () => { const identityServiceIdentifySpy = sinon.spy(libp2p.identifyService, 'identify') const identityServicePushSpy = sinon.spy(libp2p.identifyService, 'push') - + const connectionPromise = pEvent(libp2p.connectionManager, 'peer:connect') const connection = await libp2p.dial(remoteAddr) + expect(connection).to.exist() + // Wait for connection event to be emitted + await connectionPromise // Wait for identify to finish await identityServiceIdentifySpy.firstCall.returnValue diff --git a/test/upgrading/upgrader.spec.ts b/test/upgrading/upgrader.spec.ts index 536b2c53..56e5eb96 100644 --- a/test/upgrading/upgrader.spec.ts +++ b/test/upgrading/upgrader.spec.ts @@ -26,6 +26,7 @@ import type { StreamMuxer, StreamMuxerFactory, StreamMuxerInit } from '@libp2p/i import type { Stream } from '@libp2p/interfaces/connection' import pDefer from 'p-defer' import { createLibp2pNode, Libp2pNode } from '../../src/libp2p.js' +import { pEvent } from 'p-event' const addrs = [ new Multiaddr('/ip4/127.0.0.1/tcp/0'), @@ -495,10 +496,12 @@ describe('libp2p.upgrader', () => { const connectionManagerDispatchEventSpy = sinon.spy(libp2p.components.getConnectionManager(), 'dispatchEvent') // Upgrade and check the connect event + const connectionPromise = pEvent(libp2p.connectionManager, 'peer:connect') const connections = await Promise.all([ libp2p.components.getUpgrader().upgradeOutbound(outbound), remoteLibp2p.components.getUpgrader().upgradeInbound(inbound) ]) + await connectionPromise expect(connectionManagerDispatchEventSpy.callCount).to.equal(1) let [event] = connectionManagerDispatchEventSpy.getCall(0).args