File tree 3 files changed +56
-2
lines changed
3 files changed +56
-2
lines changed Original file line number Diff line number Diff line change @@ -156,15 +156,15 @@ class Node extends EventEmitter {
156
156
// so that we can have webrtc-star addrs without adding manually the id
157
157
const maOld = [ ]
158
158
const maNew = [ ]
159
- this . peerInfo . multiaddrs . forEach ( ( ma ) => {
159
+ this . peerInfo . multiaddrs . toArray ( ) . forEach ( ( ma ) => {
160
160
if ( ! ma . getPeerId ( ) ) {
161
161
maOld . push ( ma )
162
162
maNew . push ( ma . encapsulate ( '/ipfs/' + this . peerInfo . id . toB58String ( ) ) )
163
163
}
164
164
} )
165
165
this . peerInfo . multiaddrs . replace ( maOld , maNew )
166
- const multiaddrs = this . peerInfo . multiaddrs . toArray ( )
167
166
167
+ const multiaddrs = this . peerInfo . multiaddrs . toArray ( )
168
168
transports . forEach ( ( transport ) => {
169
169
if ( transport . filter ( multiaddrs ) . length > 0 ) {
170
170
this . swarm . transport . add (
@@ -200,6 +200,19 @@ class Node extends EventEmitter {
200
200
}
201
201
cb ( )
202
202
} ,
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 ( / \/ p 2 p - c i r c u i t ( $ | \/ ) / ) &&
209
+ ! transports . find ( ( transport ) => transport . filter ( multiaddr ) . length > 0 ) ) {
210
+ this . peerInfo . multiaddrs . delete ( multiaddr )
211
+ }
212
+ } )
213
+ } )
214
+ cb ( )
215
+ } ,
203
216
( cb ) => {
204
217
this . emit ( 'start' )
205
218
cb ( )
Original file line number Diff line number Diff line change
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 ( / ^ \/ i p 4 \/ 1 2 7 \. 0 \. 0 \. 1 \/ t c p \/ [ 0 - 9 ] + \/ w s \/ i p f s \/ \w + $ / )
37
+ node . stop ( done )
38
+ } )
39
+ } )
40
+ } )
Original file line number Diff line number Diff line change @@ -7,3 +7,4 @@ require('./peer-discovery.node')
7
7
require ( './peer-routing.node' )
8
8
require ( './content-routing.node' )
9
9
require ( './circuit-relay.node' )
10
+ require ( './multiaddr-trim' )
You can’t perform that action at this time.
0 commit comments