diff --git a/src/index.js b/src/index.js index adda384c..86dad112 100644 --- a/src/index.js +++ b/src/index.js @@ -478,7 +478,7 @@ class Libp2p extends EventEmitter { let discoveryService if (typeof DiscoveryService === 'function') { - discoveryService = new DiscoveryService(Object.assign({}, config, { peerInfo: this.peerInfo })) + discoveryService = new DiscoveryService(Object.assign({}, config, { peerInfo: this.peerInfo, libp2p: this })) } else { discoveryService = DiscoveryService } diff --git a/src/peer-store/index.js b/src/peer-store/index.js index 3fe4954e..494d613d 100644 --- a/src/peer-store/index.js +++ b/src/peer-store/index.js @@ -243,7 +243,8 @@ class PeerStore extends EventEmitter { */ multiaddrsForPeer (peer) { return this.put(peer, true).multiaddrs.toArray().map(addr => { - if (addr.getPeerId()) return addr + const idString = addr.getPeerId() + if (idString && idString === peer.id.toB58String()) return addr return addr.encapsulate(`/p2p/${peer.id.toB58String()}`) }) } diff --git a/test/peer-store/peer-store.spec.js b/test/peer-store/peer-store.spec.js index 46692a94..91628432 100644 --- a/test/peer-store/peer-store.spec.js +++ b/test/peer-store/peer-store.spec.js @@ -161,19 +161,22 @@ describe('peer-store', () => { expect(peerStore.peers.size).to.equal(0) }) - it('should be able to remove a peer from store through its b58str id', async () => { - const [peerInfo] = await peerUtils.createPeerInfo() + it('should be able to get the multiaddrs for a peer', async () => { + const [peerInfo, relayInfo] = await peerUtils.createPeerInfo({ number: 2 }) const id = peerInfo.id const ma1 = multiaddr('/ip4/127.0.0.1/tcp/4001') const ma2 = multiaddr('/ip4/127.0.0.1/tcp/4002/ws') + const ma3 = multiaddr(`/ip4/127.0.0.1/tcp/4003/ws/p2p/${relayInfo.id.toB58String()}/p2p-circuit`) peerInfo.multiaddrs.add(ma1) peerInfo.multiaddrs.add(ma2) + peerInfo.multiaddrs.add(ma3) const multiaddrs = peerStore.multiaddrsForPeer(peerInfo) const expectedAddrs = [ ma1.encapsulate(`/p2p/${id.toB58String()}`), - ma2.encapsulate(`/p2p/${id.toB58String()}`) + ma2.encapsulate(`/p2p/${id.toB58String()}`), + ma3.encapsulate(`/p2p/${id.toB58String()}`) ] expect(multiaddrs).to.eql(expectedAddrs)