Skip to content

Commit 9e35fbc

Browse files
authored
fix: pass libp2p to discovery services (#597)
* fix: include libp2p in the options passed to discovery creation * fix: handle multiple peer addresses in get multiaddrs for peers * test(peer-store): add test to verify returned relay multiaddrs
1 parent 3072875 commit 9e35fbc

File tree

3 files changed

+9
-5
lines changed

3 files changed

+9
-5
lines changed

src/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,7 @@ class Libp2p extends EventEmitter {
478478
let discoveryService
479479

480480
if (typeof DiscoveryService === 'function') {
481-
discoveryService = new DiscoveryService(Object.assign({}, config, { peerInfo: this.peerInfo }))
481+
discoveryService = new DiscoveryService(Object.assign({}, config, { peerInfo: this.peerInfo, libp2p: this }))
482482
} else {
483483
discoveryService = DiscoveryService
484484
}

src/peer-store/index.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,8 @@ class PeerStore extends EventEmitter {
243243
*/
244244
multiaddrsForPeer (peer) {
245245
return this.put(peer, true).multiaddrs.toArray().map(addr => {
246-
if (addr.getPeerId()) return addr
246+
const idString = addr.getPeerId()
247+
if (idString && idString === peer.id.toB58String()) return addr
247248
return addr.encapsulate(`/p2p/${peer.id.toB58String()}`)
248249
})
249250
}

test/peer-store/peer-store.spec.js

+6-3
Original file line numberDiff line numberDiff line change
@@ -161,19 +161,22 @@ describe('peer-store', () => {
161161
expect(peerStore.peers.size).to.equal(0)
162162
})
163163

164-
it('should be able to remove a peer from store through its b58str id', async () => {
165-
const [peerInfo] = await peerUtils.createPeerInfo()
164+
it('should be able to get the multiaddrs for a peer', async () => {
165+
const [peerInfo, relayInfo] = await peerUtils.createPeerInfo({ number: 2 })
166166
const id = peerInfo.id
167167
const ma1 = multiaddr('/ip4/127.0.0.1/tcp/4001')
168168
const ma2 = multiaddr('/ip4/127.0.0.1/tcp/4002/ws')
169+
const ma3 = multiaddr(`/ip4/127.0.0.1/tcp/4003/ws/p2p/${relayInfo.id.toB58String()}/p2p-circuit`)
169170

170171
peerInfo.multiaddrs.add(ma1)
171172
peerInfo.multiaddrs.add(ma2)
173+
peerInfo.multiaddrs.add(ma3)
172174

173175
const multiaddrs = peerStore.multiaddrsForPeer(peerInfo)
174176
const expectedAddrs = [
175177
ma1.encapsulate(`/p2p/${id.toB58String()}`),
176-
ma2.encapsulate(`/p2p/${id.toB58String()}`)
178+
ma2.encapsulate(`/p2p/${id.toB58String()}`),
179+
ma3.encapsulate(`/p2p/${id.toB58String()}`)
177180
]
178181

179182
expect(multiaddrs).to.eql(expectedAddrs)

0 commit comments

Comments
 (0)