@libp2p/dcutr 2.0.38-8484de8a2 → 2.0.38-87bc8d4fb

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"dcutr.d.ts","sourceRoot":"","sources":["../../src/dcutr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAQ5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC1E,OAAO,KAAK,EAAU,UAAU,EAAE,MAAM,EAAa,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAEzF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAgBxD,qBAAa,mBAAoB,YAAW,SAAS;IACnD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IACnD,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;gBAEf,UAAU,EAAE,sBAAsB,EAAE,IAAI,EAAE,gBAAgB;IAiBvE,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,mBAAkB;IAE/C,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAEvC;IAED,SAAS,IAAK,OAAO;IAIf,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAoCvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAU5B;;;;OAIG;IACG,cAAc,CAAE,iBAAiB,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAqGnE;;;OAGG;IACG,kCAAkC,CAAE,iBAAiB,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IA0D1F;;;;OAIG;IACG,qBAAqB,CAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA6D1F;;OAEG;IACH,qBAAqB,CAAE,KAAK,EAAE,KAAK,CAAC,UAAU,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,SAAS,EAAE;CAqB1F"}
1
+ {"version":3,"file":"dcutr.d.ts","sourceRoot":"","sources":["../../src/dcutr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAQ5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC1E,OAAO,KAAK,EAAU,UAAU,EAAE,MAAM,EAAa,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAEzF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAgBxD,qBAAa,mBAAoB,YAAW,SAAS;IACnD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IACnD,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;gBAEf,UAAU,EAAE,sBAAsB,EAAE,IAAI,EAAE,gBAAgB;IAevE,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,mBAAkB;IAE/C,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAEvC;IAED,SAAS,IAAK,OAAO;IAIf,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAyCvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAU5B;;;;OAIG;IACG,cAAc,CAAE,iBAAiB,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAqGnE;;;OAGG;IACG,kCAAkC,CAAE,iBAAiB,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IA0D1F;;;;OAIG;IACG,qBAAqB,CAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAmE1F;;OAEG;IACH,qBAAqB,CAAE,KAAK,EAAE,KAAK,CAAC,UAAU,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,SAAS,EAAE;CAqB1F"}
package/dist/src/dcutr.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { InvalidMessageError, serviceDependencies } from '@libp2p/interface';
2
- import { pbStream } from '@libp2p/utils';
3
- import { CODE_P2P, multiaddr } from '@multiformats/multiaddr';
2
+ import { multiaddr } from '@multiformats/multiaddr';
4
3
  import { Circuit } from '@multiformats/multiaddr-matcher';
5
4
  import delay from 'delay';
5
+ import { pbStream } from 'it-protobuf-stream';
6
6
  import { HolePunch } from './pb/message.js';
7
7
  import { isPublicAndDialable } from './utils.js';
8
8
  import { multicodec } from './index.js';
@@ -43,7 +43,6 @@ export class DefaultDCUtRService {
43
43
  this.retries = init.retries ?? defaultValues.retries;
44
44
  this.maxInboundStreams = init.maxInboundStreams ?? defaultValues.maxInboundStreams;
45
45
  this.maxOutboundStreams = init.maxOutboundStreams ?? defaultValues.maxOutboundStreams;
46
- this.handleIncomingUpgrade = this.handleIncomingUpgrade.bind(this);
47
46
  }
48
47
  [Symbol.toStringTag] = '@libp2p/dcutr';
49
48
  [serviceDependencies] = [
@@ -75,7 +74,12 @@ export class DefaultDCUtRService {
75
74
  });
76
75
  }
77
76
  });
78
- await this.registrar.handle(multicodec, this.handleIncomingUpgrade, {
77
+ await this.registrar.handle(multicodec, (data) => {
78
+ void this.handleIncomingUpgrade(data.stream, data.connection).catch(err => {
79
+ this.log.error('error during incoming DCUtR attempt', err);
80
+ data.stream.abort(err);
81
+ });
82
+ }, {
79
83
  maxInboundStreams: this.maxInboundStreams,
80
84
  maxOutboundStreams: this.maxOutboundStreams,
81
85
  runOnLimitedConnection: true
@@ -194,7 +198,7 @@ export class DefaultDCUtRService {
194
198
  .map(address => {
195
199
  const ma = address.multiaddr;
196
200
  // ensure all multiaddrs have the peer id
197
- if (ma.getComponents().find(c => c.code === CODE_P2P)?.value == null) {
201
+ if (ma.getPeerId() == null) {
198
202
  return ma.encapsulate(`/p2p/${relayedConnection.remotePeer}`);
199
203
  }
200
204
  return ma;
@@ -240,49 +244,57 @@ export class DefaultDCUtRService {
240
244
  const options = {
241
245
  signal: AbortSignal.timeout(this.timeout)
242
246
  };
243
- const pb = pbStream(stream, {
244
- maxDataLength: MAX_DCUTR_MESSAGE_SIZE
245
- }).pb(HolePunch);
246
- this.log('A receiving connect');
247
- // 3. Upon receiving the Connect, A responds back with a Connect message
248
- // containing its observed (and possibly predicted) addresses.
249
- const connect = await pb.read(options);
250
- if (connect.type !== HolePunch.Type.CONNECT) {
251
- this.log('B sent wrong message type');
252
- throw new InvalidMessageError('DCUtR message type was incorrect');
253
- }
254
- if (connect.observedAddresses.length === 0) {
255
- this.log('B sent no multiaddrs');
256
- throw new InvalidMessageError('DCUtR connect message had no multiaddrs');
247
+ try {
248
+ const pb = pbStream(stream, {
249
+ maxDataLength: MAX_DCUTR_MESSAGE_SIZE
250
+ }).pb(HolePunch);
251
+ this.log('A receiving connect');
252
+ // 3. Upon receiving the Connect, A responds back with a Connect message
253
+ // containing its observed (and possibly predicted) addresses.
254
+ const connect = await pb.read(options);
255
+ if (connect.type !== HolePunch.Type.CONNECT) {
256
+ this.log('B sent wrong message type');
257
+ throw new InvalidMessageError('DCUtR message type was incorrect');
258
+ }
259
+ if (connect.observedAddresses.length === 0) {
260
+ this.log('B sent no multiaddrs');
261
+ throw new InvalidMessageError('DCUtR connect message had no multiaddrs');
262
+ }
263
+ const multiaddrs = this.getDialableMultiaddrs(connect.observedAddresses);
264
+ if (multiaddrs.length === 0) {
265
+ this.log('B had no dialable multiaddrs');
266
+ throw new InvalidMessageError('DCUtR connect message had no dialable multiaddrs');
267
+ }
268
+ this.log('A sending connect');
269
+ await pb.write({
270
+ type: HolePunch.Type.CONNECT,
271
+ observedAddresses: this.addressManager.getAddresses().map(ma => ma.bytes)
272
+ });
273
+ this.log('A receiving sync');
274
+ const sync = await pb.read(options);
275
+ if (sync.type !== HolePunch.Type.SYNC) {
276
+ throw new InvalidMessageError('DCUtR message type was incorrect');
277
+ }
278
+ // TODO: when we have a QUIC transport, the dial step is different - for
279
+ // now we only have tcp support
280
+ // https://github.com/libp2p/specs/blob/master/relay/DCUtR.md#the-protocol
281
+ // Upon receiving the Sync, A immediately dials the address to B
282
+ this.log('A dialing', multiaddrs);
283
+ const connection = await this.connectionManager.openConnection(multiaddrs, {
284
+ signal: options.signal,
285
+ priority: DCUTR_DIAL_PRIORITY,
286
+ force: true
287
+ });
288
+ this.log('DCUtR to %p succeeded via %a, closing relayed connection', relayedConnection.remotePeer, connection.remoteAddr);
289
+ await relayedConnection.close(options);
257
290
  }
258
- const multiaddrs = this.getDialableMultiaddrs(connect.observedAddresses);
259
- if (multiaddrs.length === 0) {
260
- this.log('B had no dialable multiaddrs in %o', connect.observedAddresses.map(b => multiaddr(b)));
261
- throw new InvalidMessageError('DCUtR connect message had no dialable multiaddrs');
291
+ catch (err) {
292
+ this.log.error('incoming DCUtR from %p failed', relayedConnection.remotePeer, err);
293
+ stream.abort(err);
262
294
  }
263
- this.log('A sending connect');
264
- await pb.write({
265
- type: HolePunch.Type.CONNECT,
266
- observedAddresses: this.addressManager.getAddresses().map(ma => ma.bytes)
267
- });
268
- this.log('A receiving sync');
269
- const sync = await pb.read(options);
270
- if (sync.type !== HolePunch.Type.SYNC) {
271
- throw new InvalidMessageError('DCUtR message type was incorrect');
295
+ finally {
296
+ await stream.close(options);
272
297
  }
273
- // TODO: when we have a QUIC transport, the dial step is different - for
274
- // now we only have tcp support
275
- // https://github.com/libp2p/specs/blob/master/relay/DCUtR.md#the-protocol
276
- // Upon receiving the Sync, A immediately dials the address to B
277
- this.log('A dialing', multiaddrs);
278
- const connection = await this.connectionManager.openConnection(multiaddrs, {
279
- signal: options.signal,
280
- priority: DCUTR_DIAL_PRIORITY,
281
- force: true
282
- });
283
- this.log('DCUtR to %p succeeded via %a, closing relayed connection', relayedConnection.remotePeer, connection.remoteAddr);
284
- await relayedConnection.close(options);
285
- await stream.close(options);
286
298
  }
287
299
  /**
288
300
  * Takes the `addr` and converts it to a Multiaddr if possible
@@ -1 +1 @@
1
- {"version":3,"file":"dcutr.js","sourceRoot":"","sources":["../../src/dcutr.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dcutr.js","sourceRoot":"","sources":["../../src/dcutr.ts"],"names":[],"mappings":"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"}
package/dist/src/utils.js CHANGED
@@ -1,4 +1,4 @@
1
- import { isPrivate } from '@libp2p/utils';
1
+ import { isPrivateIp } from '@libp2p/utils/private-ip';
2
2
  import { Circuit, IP, DNS } from '@multiformats/multiaddr-matcher';
3
3
  /**
4
4
  * Returns true if the passed multiaddr is public, not relayed and we have a
@@ -21,6 +21,6 @@ export function isPublicAndDialable(ma, transportManager) {
21
21
  if (!IP.matches(ma)) {
22
22
  return false;
23
23
  }
24
- return !isPrivate(ma);
24
+ return isPrivateIp(ma.toOptions().host) === false;
25
25
  }
26
26
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,iCAAiC,CAAA;AAIlE;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAE,EAAa,EAAE,gBAAkC;IACpF,uBAAuB;IACvB,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACxB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAA;IAEhE,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;QACtB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,qCAAqC;IACrC,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,0CAA0C;IAC1C,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACpB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;AACvB,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,iCAAiC,CAAA;AAIlE;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAE,EAAa,EAAE,gBAAkC;IACpF,uBAAuB;IACvB,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACxB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAA;IAEhE,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;QACtB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,qCAAqC;IACrC,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,0CAA0C;IAC1C,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACpB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,CAAA;AACnD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/dcutr",
3
- "version": "2.0.38-8484de8a2",
3
+ "version": "2.0.38-87bc8d4fb",
4
4
  "description": "Implementation of the DCUtR Protocol",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/protocol-dcutr#readme",
@@ -45,19 +45,20 @@
45
45
  "doc-check": "aegir doc-check"
46
46
  },
47
47
  "dependencies": {
48
- "@libp2p/interface": "2.11.0-8484de8a2",
49
- "@libp2p/interface-internal": "2.3.19-8484de8a2",
50
- "@libp2p/utils": "6.7.2-8484de8a2",
51
- "@multiformats/multiaddr": "^13.0.1",
52
- "@multiformats/multiaddr-matcher": "^3.0.1",
48
+ "@libp2p/interface": "2.11.0-87bc8d4fb",
49
+ "@libp2p/interface-internal": "2.3.19-87bc8d4fb",
50
+ "@libp2p/utils": "6.7.2-87bc8d4fb",
51
+ "@multiformats/multiaddr": "^12.4.4",
52
+ "@multiformats/multiaddr-matcher": "^2.0.0",
53
53
  "delay": "^6.0.0",
54
- "protons-runtime": "^5.6.0",
54
+ "it-protobuf-stream": "^2.0.2",
55
+ "protons-runtime": "^5.5.0",
55
56
  "uint8arraylist": "^2.4.8"
56
57
  },
57
58
  "devDependencies": {
58
- "aegir": "^47.0.21",
59
- "protons": "^7.7.0",
60
- "sinon": "^21.0.0",
59
+ "aegir": "^47.0.14",
60
+ "protons": "^7.6.1",
61
+ "sinon": "^20.0.0",
61
62
  "sinon-ts": "^2.0.0"
62
63
  },
63
64
  "sideEffects": false
package/src/dcutr.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { InvalidMessageError, serviceDependencies } from '@libp2p/interface'
2
- import { pbStream } from '@libp2p/utils'
3
- import { CODE_P2P, multiaddr } from '@multiformats/multiaddr'
2
+ import { multiaddr } from '@multiformats/multiaddr'
4
3
  import { Circuit } from '@multiformats/multiaddr-matcher'
5
4
  import delay from 'delay'
5
+ import { pbStream } from 'it-protobuf-stream'
6
6
  import { HolePunch } from './pb/message.js'
7
7
  import { isPublicAndDialable } from './utils.js'
8
8
  import { multicodec } from './index.js'
@@ -52,8 +52,6 @@ export class DefaultDCUtRService implements Startable {
52
52
  this.retries = init.retries ?? defaultValues.retries
53
53
  this.maxInboundStreams = init.maxInboundStreams ?? defaultValues.maxInboundStreams
54
54
  this.maxOutboundStreams = init.maxOutboundStreams ?? defaultValues.maxOutboundStreams
55
-
56
- this.handleIncomingUpgrade = this.handleIncomingUpgrade.bind(this)
57
55
  }
58
56
 
59
57
  readonly [Symbol.toStringTag] = '@libp2p/dcutr'
@@ -93,7 +91,12 @@ export class DefaultDCUtRService implements Startable {
93
91
  }
94
92
  })
95
93
 
96
- await this.registrar.handle(multicodec, this.handleIncomingUpgrade, {
94
+ await this.registrar.handle(multicodec, (data) => {
95
+ void this.handleIncomingUpgrade(data.stream, data.connection).catch(err => {
96
+ this.log.error('error during incoming DCUtR attempt', err)
97
+ data.stream.abort(err)
98
+ })
99
+ }, {
97
100
  maxInboundStreams: this.maxInboundStreams,
98
101
  maxOutboundStreams: this.maxOutboundStreams,
99
102
  runOnLimitedConnection: true
@@ -235,7 +238,7 @@ export class DefaultDCUtRService implements Startable {
235
238
  const ma = address.multiaddr
236
239
 
237
240
  // ensure all multiaddrs have the peer id
238
- if (ma.getComponents().find(c => c.code === CODE_P2P)?.value == null) {
241
+ if (ma.getPeerId() == null) {
239
242
  return ma.encapsulate(`/p2p/${relayedConnection.remotePeer}`)
240
243
  }
241
244
 
@@ -290,60 +293,66 @@ export class DefaultDCUtRService implements Startable {
290
293
  signal: AbortSignal.timeout(this.timeout)
291
294
  }
292
295
 
293
- const pb = pbStream(stream, {
294
- maxDataLength: MAX_DCUTR_MESSAGE_SIZE
295
- }).pb(HolePunch)
296
+ try {
297
+ const pb = pbStream(stream, {
298
+ maxDataLength: MAX_DCUTR_MESSAGE_SIZE
299
+ }).pb(HolePunch)
296
300
 
297
- this.log('A receiving connect')
298
- // 3. Upon receiving the Connect, A responds back with a Connect message
299
- // containing its observed (and possibly predicted) addresses.
300
- const connect = await pb.read(options)
301
+ this.log('A receiving connect')
302
+ // 3. Upon receiving the Connect, A responds back with a Connect message
303
+ // containing its observed (and possibly predicted) addresses.
304
+ const connect = await pb.read(options)
301
305
 
302
- if (connect.type !== HolePunch.Type.CONNECT) {
303
- this.log('B sent wrong message type')
304
- throw new InvalidMessageError('DCUtR message type was incorrect')
305
- }
306
+ if (connect.type !== HolePunch.Type.CONNECT) {
307
+ this.log('B sent wrong message type')
308
+ throw new InvalidMessageError('DCUtR message type was incorrect')
309
+ }
306
310
 
307
- if (connect.observedAddresses.length === 0) {
308
- this.log('B sent no multiaddrs')
309
- throw new InvalidMessageError('DCUtR connect message had no multiaddrs')
310
- }
311
+ if (connect.observedAddresses.length === 0) {
312
+ this.log('B sent no multiaddrs')
313
+ throw new InvalidMessageError('DCUtR connect message had no multiaddrs')
314
+ }
311
315
 
312
- const multiaddrs = this.getDialableMultiaddrs(connect.observedAddresses)
316
+ const multiaddrs = this.getDialableMultiaddrs(connect.observedAddresses)
313
317
 
314
- if (multiaddrs.length === 0) {
315
- this.log('B had no dialable multiaddrs in %o', connect.observedAddresses.map(b => multiaddr(b)))
316
- throw new InvalidMessageError('DCUtR connect message had no dialable multiaddrs')
317
- }
318
+ if (multiaddrs.length === 0) {
319
+ this.log('B had no dialable multiaddrs')
320
+ throw new InvalidMessageError('DCUtR connect message had no dialable multiaddrs')
321
+ }
318
322
 
319
- this.log('A sending connect')
320
- await pb.write({
321
- type: HolePunch.Type.CONNECT,
322
- observedAddresses: this.addressManager.getAddresses().map(ma => ma.bytes)
323
- })
323
+ this.log('A sending connect')
324
+ await pb.write({
325
+ type: HolePunch.Type.CONNECT,
326
+ observedAddresses: this.addressManager.getAddresses().map(ma => ma.bytes)
327
+ })
324
328
 
325
- this.log('A receiving sync')
326
- const sync = await pb.read(options)
329
+ this.log('A receiving sync')
330
+ const sync = await pb.read(options)
327
331
 
328
- if (sync.type !== HolePunch.Type.SYNC) {
329
- throw new InvalidMessageError('DCUtR message type was incorrect')
330
- }
332
+ if (sync.type !== HolePunch.Type.SYNC) {
333
+ throw new InvalidMessageError('DCUtR message type was incorrect')
334
+ }
331
335
 
332
- // TODO: when we have a QUIC transport, the dial step is different - for
333
- // now we only have tcp support
334
- // https://github.com/libp2p/specs/blob/master/relay/DCUtR.md#the-protocol
336
+ // TODO: when we have a QUIC transport, the dial step is different - for
337
+ // now we only have tcp support
338
+ // https://github.com/libp2p/specs/blob/master/relay/DCUtR.md#the-protocol
335
339
 
336
- // Upon receiving the Sync, A immediately dials the address to B
337
- this.log('A dialing', multiaddrs)
338
- const connection = await this.connectionManager.openConnection(multiaddrs, {
339
- signal: options.signal,
340
- priority: DCUTR_DIAL_PRIORITY,
341
- force: true
342
- })
340
+ // Upon receiving the Sync, A immediately dials the address to B
341
+ this.log('A dialing', multiaddrs)
342
+ const connection = await this.connectionManager.openConnection(multiaddrs, {
343
+ signal: options.signal,
344
+ priority: DCUTR_DIAL_PRIORITY,
345
+ force: true
346
+ })
343
347
 
344
- this.log('DCUtR to %p succeeded via %a, closing relayed connection', relayedConnection.remotePeer, connection.remoteAddr)
345
- await relayedConnection.close(options)
346
- await stream.close(options)
348
+ this.log('DCUtR to %p succeeded via %a, closing relayed connection', relayedConnection.remotePeer, connection.remoteAddr)
349
+ await relayedConnection.close(options)
350
+ } catch (err: any) {
351
+ this.log.error('incoming DCUtR from %p failed', relayedConnection.remotePeer, err)
352
+ stream.abort(err)
353
+ } finally {
354
+ await stream.close(options)
355
+ }
347
356
  }
348
357
 
349
358
  /**
package/src/utils.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { isPrivate } from '@libp2p/utils'
1
+ import { isPrivateIp } from '@libp2p/utils/private-ip'
2
2
  import { Circuit, IP, DNS } from '@multiformats/multiaddr-matcher'
3
3
  import type { TransportManager } from '@libp2p/interface-internal'
4
4
  import type { Multiaddr } from '@multiformats/multiaddr'
@@ -29,5 +29,5 @@ export function isPublicAndDialable (ma: Multiaddr, transportManager: TransportM
29
29
  return false
30
30
  }
31
31
 
32
- return !isPrivate(ma)
32
+ return isPrivateIp(ma.toOptions().host) === false
33
33
  }