Skip to content

Commit 1b7360f

Browse files
pgtedaviddias
authored andcommitted
fix: remove innactive multiaddrs (#131)
1 parent 67ca37c commit 1b7360f

File tree

3 files changed

+56
-2
lines changed

3 files changed

+56
-2
lines changed

src/index.js

+15-2
Original file line numberDiff line numberDiff line change
@@ -156,15 +156,15 @@ class Node extends EventEmitter {
156156
// so that we can have webrtc-star addrs without adding manually the id
157157
const maOld = []
158158
const maNew = []
159-
this.peerInfo.multiaddrs.forEach((ma) => {
159+
this.peerInfo.multiaddrs.toArray().forEach((ma) => {
160160
if (!ma.getPeerId()) {
161161
maOld.push(ma)
162162
maNew.push(ma.encapsulate('/ipfs/' + this.peerInfo.id.toB58String()))
163163
}
164164
})
165165
this.peerInfo.multiaddrs.replace(maOld, maNew)
166-
const multiaddrs = this.peerInfo.multiaddrs.toArray()
167166

167+
const multiaddrs = this.peerInfo.multiaddrs.toArray()
168168
transports.forEach((transport) => {
169169
if (transport.filter(multiaddrs).length > 0) {
170170
this.swarm.transport.add(
@@ -200,6 +200,19 @@ class Node extends EventEmitter {
200200
}
201201
cb()
202202
},
203+
(cb) => {
204+
// detect which multiaddrs we don't have a transport for and remove them
205+
const multiaddrs = this.peerInfo.multiaddrs.toArray()
206+
transports.forEach((transport) => {
207+
multiaddrs.forEach((multiaddr) => {
208+
if (!multiaddr.toString().match(/\/p2p-circuit($|\/)/) &&
209+
!transports.find((transport) => transport.filter(multiaddr).length > 0)) {
210+
this.peerInfo.multiaddrs.delete(multiaddr)
211+
}
212+
})
213+
})
214+
cb()
215+
},
203216
(cb) => {
204217
this.emit('start')
205218
cb()

test/multiaddr-trim.js

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/* eslint-env mocha */
2+
'use strict'
3+
4+
const chai = require('chai')
5+
chai.use(require('dirty-chai'))
6+
const expect = chai.expect
7+
const series = require('async/series')
8+
const createNode = require('./utils/node').createNode
9+
10+
describe('multiaddr trim', () => {
11+
it('non used multiaddrs get trimmed', (done) => {
12+
let node
13+
14+
series([
15+
(cb) => createNode([
16+
'/ip4/0.0.0.0/tcp/999/wss/p2p-webrtc-direct',
17+
'/ip4/127.0.0.1/tcp/55555/ws',
18+
'/ip4/0.0.0.0/tcp/0/'
19+
], (err, _node) => {
20+
expect(err).to.not.exist()
21+
node = _node
22+
const multiaddrs = node.peerInfo.multiaddrs.toArray()
23+
// multiaddrs.forEach((ma) => console.log(ma.toString()))
24+
expect(multiaddrs).to.have.length(3)
25+
cb()
26+
}),
27+
(cb) => node.start(cb)
28+
], (err) => {
29+
expect(err).to.not.exist()
30+
31+
const multiaddrs = node.peerInfo.multiaddrs.toArray()
32+
// console.log('--')
33+
// multiaddrs.forEach((ma) => console.log(ma.toString()))
34+
35+
expect(multiaddrs.length).to.at.least(2)
36+
expect(multiaddrs[0].toString()).to.match(/^\/ip4\/127\.0\.0\.1\/tcp\/[0-9]+\/ws\/ipfs\/\w+$/)
37+
node.stop(done)
38+
})
39+
})
40+
})

test/node.js

+1
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@ require('./peer-discovery.node')
77
require('./peer-routing.node')
88
require('./content-routing.node')
99
require('./circuit-relay.node')
10+
require('./multiaddr-trim')

0 commit comments

Comments
 (0)