@libp2p/autonat 2.0.37 → 2.0.38-a02cb0461

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,6 +1,6 @@
1
1
  import { serviceCapabilities, serviceDependencies } from '@libp2p/interface';
2
2
  import type { AutoNATComponents, AutoNATServiceInit } from './index.js';
3
- import type { Connection, Startable, AbortOptions, IncomingStreamData } from '@libp2p/interface';
3
+ import type { Connection, Startable, AbortOptions, Stream } from '@libp2p/interface';
4
4
  export declare class AutoNATService implements Startable {
5
5
  private readonly components;
6
6
  private readonly protocol;
@@ -27,7 +27,7 @@ export declare class AutoNATService implements Startable {
27
27
  /**
28
28
  * Handle an incoming AutoNAT request
29
29
  */
30
- handleIncomingAutonatStream(data: IncomingStreamData): Promise<void>;
30
+ handleIncomingAutonatStream(stream: Stream, connection: Connection): Promise<void>;
31
31
  private handleAutonatMessage;
32
32
  /**
33
33
  * The AutoNAT v1 server is not required to send us the address that it
@@ -1 +1 @@
1
- {"version":3,"file":"autonat.d.ts","sourceRoot":"","sources":["../../src/autonat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAgB5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACvE,OAAO,KAAK,EAAU,UAAU,EAAU,SAAS,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAmEhH,qBAAa,cAAe,YAAW,SAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,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,cAAc,CAAQ;IACvC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0B;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAQ;gBAE/B,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,kBAAkB;IAkBpE,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,qBAAoB;IAEjD,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAEvC;IAED,IAAI,CAAC,mBAAmB,CAAC,IAAK,MAAM,EAAE,CAIrC;IAED,SAAS,IAAK,OAAO;IAIf,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IA4BvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAY5B,OAAO,CAAC,uBAAuB;IAWzB,eAAe,CAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA4C7D;;OAEG;IACG,2BAA2B,CAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;YA2B7D,oBAAoB;IAiKlC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,2BAA2B;IAsGnC;;;OAGG;IACH,OAAO,CAAC,8BAA8B;IAoBtC;;OAEG;IACG,uBAAuB,CAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;YAsDvD,eAAe;IAsG7B,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,iBAAiB;CAY1B"}
1
+ {"version":3,"file":"autonat.d.ts","sourceRoot":"","sources":["../../src/autonat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAU5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACvE,OAAO,KAAK,EAAU,UAAU,EAAU,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAkEpG,qBAAa,cAAe,YAAW,SAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,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,cAAc,CAAQ;IACvC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0B;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAQ;gBAE/B,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,kBAAkB;IAkBpE,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,qBAAoB;IAEjD,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAEvC;IAED,IAAI,CAAC,mBAAmB,CAAC,IAAK,MAAM,EAAE,CAIrC;IAED,SAAS,IAAK,OAAO;IAIf,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IA4BvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAY5B,OAAO,CAAC,uBAAuB;IAWzB,eAAe,CAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA4C7D;;OAEG;IACG,2BAA2B,CAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;YA2B3E,oBAAoB;IAuKlC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,2BAA2B;IAsGnC;;;OAGG;IACH,OAAO,CAAC,8BAA8B;IAoBtC;;OAEG;IACG,uBAAuB,CAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;YAsDvD,eAAe;IAsG7B,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,iBAAiB;CAY1B"}
@@ -1,15 +1,9 @@
1
1
  import { serviceCapabilities, serviceDependencies } from '@libp2p/interface';
2
2
  import { peerSet } from '@libp2p/peer-collections';
3
3
  import { peerIdFromMultihash } from '@libp2p/peer-id';
4
- import { createScalableCuckooFilter } from '@libp2p/utils/filters';
5
- import { isGlobalUnicast } from '@libp2p/utils/multiaddr/is-global-unicast';
6
- import { isPrivate } from '@libp2p/utils/multiaddr/is-private';
7
- import { PeerQueue } from '@libp2p/utils/peer-queue';
8
- import { repeatingTask } from '@libp2p/utils/repeating-task';
9
- import { trackedMap } from '@libp2p/utils/tracked-map';
10
- import { multiaddr, protocols } from '@multiformats/multiaddr';
4
+ import { createScalableCuckooFilter, isGlobalUnicast, isPrivate, PeerQueue, repeatingTask, trackedMap, pbStream } from '@libp2p/utils';
5
+ import { CODE_P2P, multiaddr } from '@multiformats/multiaddr';
11
6
  import { anySignal } from 'any-signal';
12
- import { pbStream } from 'it-protobuf-stream';
13
7
  import { setMaxListeners } from 'main-event';
14
8
  import * as Digest from 'multiformats/hashes/digest';
15
9
  import { DEFAULT_CONNECTION_THRESHOLD, MAX_INBOUND_STREAMS, MAX_MESSAGE_SIZE, MAX_OUTBOUND_STREAMS, PROTOCOL_NAME, PROTOCOL_PREFIX, PROTOCOL_VERSION, TIMEOUT } from './constants.js';
@@ -66,8 +60,8 @@ export class AutoNATService {
66
60
  if (this.started) {
67
61
  return;
68
62
  }
69
- await this.components.registrar.handle(this.protocol, (data) => {
70
- void this.handleIncomingAutonatStream(data)
63
+ await this.components.registrar.handle(this.protocol, (stream, connection) => {
64
+ void this.handleIncomingAutonatStream(stream, connection)
71
65
  .catch(err => {
72
66
  this.log.error('error handling incoming autonat stream - %e', err);
73
67
  });
@@ -145,29 +139,29 @@ export class AutoNATService {
145
139
  /**
146
140
  * Handle an incoming AutoNAT request
147
141
  */
148
- async handleIncomingAutonatStream(data) {
142
+ async handleIncomingAutonatStream(stream, connection) {
149
143
  const signal = AbortSignal.timeout(this.timeout);
150
144
  setMaxListeners(Infinity, signal);
151
- const messages = pbStream(data.stream, {
152
- maxDataLength: this.maxMessageSize
153
- }).pb(Message);
154
145
  try {
146
+ const messages = pbStream(stream, {
147
+ maxDataLength: this.maxMessageSize
148
+ }).pb(Message);
155
149
  const request = await messages.read({
156
150
  signal
157
151
  });
158
- const response = await this.handleAutonatMessage(request, data.connection, {
152
+ const response = await this.handleAutonatMessage(request, connection, {
159
153
  signal
160
154
  });
161
155
  await messages.write(response, {
162
156
  signal
163
157
  });
164
- await messages.unwrap().unwrap().close({
158
+ await stream.close({
165
159
  signal
166
160
  });
167
161
  }
168
162
  catch (err) {
169
163
  this.log.error('error handling incoming autonat stream - %e', err);
170
- data.stream.abort(err);
164
+ stream.abort(err);
171
165
  }
172
166
  }
173
167
  async handleAutonatMessage(message, connection, options) {
@@ -226,26 +220,33 @@ export class AutoNATService {
226
220
  const multiaddrs = peer.addrs
227
221
  .map(buf => multiaddr(buf))
228
222
  .filter(ma => {
229
- const options = ma.toOptions();
230
- if (isPrivate(ma)) {
231
- // don't try to dial private addresses
232
- return false;
233
- }
234
- if (options.host !== connection.remoteAddr.toOptions().host) {
235
- // skip any Multiaddrs where the target node's IP does not match the sending node's IP
236
- this.log.trace('not dialing %a - target host did not match remote host %a', ma, connection.remoteAddr);
237
- return false;
238
- }
239
- if (ourHosts.includes(options.host)) {
240
- // don't try to dial nodes on the same host as us
241
- return false;
223
+ try {
224
+ const options = ma.toOptions();
225
+ if (isPrivate(ma)) {
226
+ // don't try to dial private addresses
227
+ return false;
228
+ }
229
+ if (options.host !== connection.remoteAddr.toOptions().host) {
230
+ // skip any Multiaddrs where the target node's IP does not match the sending node's IP
231
+ this.log.trace('not dialing %a - target host did not match remote host %a', ma, connection.remoteAddr);
232
+ return false;
233
+ }
234
+ if (ourHosts.includes(options.host)) {
235
+ // don't try to dial nodes on the same host as us
236
+ return false;
237
+ }
238
+ if (this.components.transportManager.dialTransportForMultiaddr(ma) == null) {
239
+ // skip any Multiaddrs that have transports we do not support
240
+ this.log.trace('not dialing %a - transport unsupported', ma);
241
+ return false;
242
+ }
243
+ return true;
242
244
  }
243
- if (this.components.transportManager.dialTransportForMultiaddr(ma) == null) {
244
- // skip any Multiaddrs that have transports we do not support
245
- this.log.trace('not dialing %a - transport unsupported', ma);
245
+ catch {
246
+ // skip any addresses that cannot be parsed (memory, webrtc incoming,
247
+ // etc)
246
248
  return false;
247
249
  }
248
- return true;
249
250
  })
250
251
  .map(ma => {
251
252
  if (ma.getPeerId() == null) {
@@ -282,7 +283,7 @@ export class AutoNATService {
282
283
  type: Message.MessageType.DIAL_RESPONSE,
283
284
  dialResponse: {
284
285
  status: Message.ResponseStatus.OK,
285
- addr: connection.remoteAddr.decapsulateCode(protocols('p2p').code).bytes
286
+ addr: connection.remoteAddr.decapsulateCode(CODE_P2P).bytes
286
287
  }
287
288
  };
288
289
  }
@@ -476,7 +477,7 @@ export class AutoNATService {
476
477
  }
477
478
  const signal = AbortSignal.timeout(this.timeout);
478
479
  setMaxListeners(Infinity, signal);
479
- this.log.trace('asking %p to verify multiaddr %s', connection.remotePeer, options.multiaddr);
480
+ this.log.trace('asking %a to verify multiaddr %s', connection.remoteAddr, options.multiaddr);
480
481
  const stream = await connection.newStream(this.protocol, {
481
482
  signal
482
483
  });
@@ -1 +1 @@
1
- {"version":3,"file":"autonat.js","sourceRoot":"","sources":["../../src/autonat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"autonat.js","sourceRoot":"","sources":["../../src/autonat.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/autonat",
3
- "version": "2.0.37",
3
+ "version": "2.0.38-a02cb0461",
4
4
  "description": "Implementation of Autonat Protocol",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/protocol-autonat#readme",
@@ -45,31 +45,29 @@
45
45
  "doc-check": "aegir doc-check"
46
46
  },
47
47
  "dependencies": {
48
- "@libp2p/interface": "^2.10.5",
49
- "@libp2p/interface-internal": "^2.3.18",
50
- "@libp2p/peer-collections": "^6.0.34",
51
- "@libp2p/peer-id": "^5.1.8",
52
- "@libp2p/utils": "^6.7.1",
53
- "@multiformats/multiaddr": "^12.4.4",
48
+ "@libp2p/interface": "2.11.0-a02cb0461",
49
+ "@libp2p/interface-internal": "2.3.19-a02cb0461",
50
+ "@libp2p/peer-collections": "6.0.35-a02cb0461",
51
+ "@libp2p/peer-id": "5.1.9-a02cb0461",
52
+ "@libp2p/utils": "6.7.2-a02cb0461",
53
+ "@multiformats/multiaddr": "^12.5.1",
54
54
  "any-signal": "^4.1.1",
55
- "it-protobuf-stream": "^2.0.2",
56
55
  "main-event": "^1.0.1",
57
- "multiformats": "^13.3.6",
58
- "protons-runtime": "^5.5.0",
56
+ "multiformats": "^13.4.0",
57
+ "protons-runtime": "^5.6.0",
59
58
  "uint8arraylist": "^2.4.8"
60
59
  },
61
60
  "devDependencies": {
62
- "@libp2p/crypto": "^5.1.7",
63
- "@libp2p/logger": "^5.1.21",
64
- "aegir": "^47.0.14",
65
- "it-all": "^3.0.8",
66
- "it-drain": "^3.0.9",
61
+ "@libp2p/crypto": "5.1.8-a02cb0461",
62
+ "@libp2p/logger": "5.2.0-a02cb0461",
63
+ "aegir": "^47.0.21",
64
+ "delay": "^6.0.0",
65
+ "it-all": "^3.0.9",
67
66
  "it-length-prefixed": "^10.0.1",
68
67
  "it-pipe": "^3.0.1",
69
- "it-pushable": "^3.2.3",
70
- "p-retry": "^6.2.1",
71
- "protons": "^7.6.1",
72
- "sinon": "^20.0.0",
68
+ "p-retry": "^7.0.0",
69
+ "protons": "^7.7.0",
70
+ "sinon": "^21.0.0",
73
71
  "sinon-ts": "^2.0.0"
74
72
  },
75
73
  "sideEffects": false
package/src/autonat.ts CHANGED
@@ -1,25 +1,18 @@
1
1
  import { serviceCapabilities, serviceDependencies } from '@libp2p/interface'
2
2
  import { peerSet } from '@libp2p/peer-collections'
3
3
  import { peerIdFromMultihash } from '@libp2p/peer-id'
4
- import { createScalableCuckooFilter } from '@libp2p/utils/filters'
5
- import { isGlobalUnicast } from '@libp2p/utils/multiaddr/is-global-unicast'
6
- import { isPrivate } from '@libp2p/utils/multiaddr/is-private'
7
- import { PeerQueue } from '@libp2p/utils/peer-queue'
8
- import { repeatingTask } from '@libp2p/utils/repeating-task'
9
- import { trackedMap } from '@libp2p/utils/tracked-map'
10
- import { multiaddr, protocols } from '@multiformats/multiaddr'
4
+ import { createScalableCuckooFilter, isGlobalUnicast, isPrivate, PeerQueue, repeatingTask, trackedMap, pbStream } from '@libp2p/utils'
5
+ import { CODE_P2P, multiaddr } from '@multiformats/multiaddr'
11
6
  import { anySignal } from 'any-signal'
12
- import { pbStream } from 'it-protobuf-stream'
13
7
  import { setMaxListeners } from 'main-event'
14
8
  import * as Digest from 'multiformats/hashes/digest'
15
9
  import { DEFAULT_CONNECTION_THRESHOLD, MAX_INBOUND_STREAMS, MAX_MESSAGE_SIZE, MAX_OUTBOUND_STREAMS, PROTOCOL_NAME, PROTOCOL_PREFIX, PROTOCOL_VERSION, TIMEOUT } from './constants.js'
16
10
  import { Message } from './pb/index.js'
17
11
  import type { AutoNATComponents, AutoNATServiceInit } from './index.js'
18
- import type { Logger, Connection, PeerId, Startable, AbortOptions, IncomingStreamData } from '@libp2p/interface'
12
+ import type { Logger, Connection, PeerId, Startable, AbortOptions, Stream } from '@libp2p/interface'
19
13
  import type { AddressType } from '@libp2p/interface-internal'
20
14
  import type { PeerSet } from '@libp2p/peer-collections'
21
- import type { Filter } from '@libp2p/utils/filters'
22
- import type { RepeatingTask } from '@libp2p/utils/repeating-task'
15
+ import type { Filter, RepeatingTask } from '@libp2p/utils'
23
16
  import type { Multiaddr } from '@multiformats/multiaddr'
24
17
 
25
18
  // if more than 3 peers manage to dial us on what we believe to be our external
@@ -136,8 +129,8 @@ export class AutoNATService implements Startable {
136
129
  return
137
130
  }
138
131
 
139
- await this.components.registrar.handle(this.protocol, (data) => {
140
- void this.handleIncomingAutonatStream(data)
132
+ await this.components.registrar.handle(this.protocol, (stream, connection) => {
133
+ void this.handleIncomingAutonatStream(stream, connection)
141
134
  .catch(err => {
142
135
  this.log.error('error handling incoming autonat stream - %e', err)
143
136
  })
@@ -229,30 +222,30 @@ export class AutoNATService implements Startable {
229
222
  /**
230
223
  * Handle an incoming AutoNAT request
231
224
  */
232
- async handleIncomingAutonatStream (data: IncomingStreamData): Promise<void> {
225
+ async handleIncomingAutonatStream (stream: Stream, connection: Connection): Promise<void> {
233
226
  const signal = AbortSignal.timeout(this.timeout)
234
227
  setMaxListeners(Infinity, signal)
235
228
 
236
- const messages = pbStream(data.stream, {
237
- maxDataLength: this.maxMessageSize
238
- }).pb(Message)
239
-
240
229
  try {
230
+ const messages = pbStream(stream, {
231
+ maxDataLength: this.maxMessageSize
232
+ }).pb(Message)
233
+
241
234
  const request = await messages.read({
242
235
  signal
243
236
  })
244
- const response = await this.handleAutonatMessage(request, data.connection, {
237
+ const response = await this.handleAutonatMessage(request, connection, {
245
238
  signal
246
239
  })
247
240
  await messages.write(response, {
248
241
  signal
249
242
  })
250
- await messages.unwrap().unwrap().close({
243
+ await stream.close({
251
244
  signal
252
245
  })
253
246
  } catch (err: any) {
254
247
  this.log.error('error handling incoming autonat stream - %e', err)
255
- data.stream.abort(err)
248
+ stream.abort(err)
256
249
  }
257
250
  }
258
251
 
@@ -323,31 +316,37 @@ export class AutoNATService implements Startable {
323
316
  const multiaddrs = peer.addrs
324
317
  .map(buf => multiaddr(buf))
325
318
  .filter(ma => {
326
- const options = ma.toOptions()
319
+ try {
320
+ const options = ma.toOptions()
327
321
 
328
- if (isPrivate(ma)) {
329
- // don't try to dial private addresses
330
- return false
331
- }
322
+ if (isPrivate(ma)) {
323
+ // don't try to dial private addresses
324
+ return false
325
+ }
332
326
 
333
- if (options.host !== connection.remoteAddr.toOptions().host) {
334
- // skip any Multiaddrs where the target node's IP does not match the sending node's IP
335
- this.log.trace('not dialing %a - target host did not match remote host %a', ma, connection.remoteAddr)
336
- return false
337
- }
327
+ if (options.host !== connection.remoteAddr.toOptions().host) {
328
+ // skip any Multiaddrs where the target node's IP does not match the sending node's IP
329
+ this.log.trace('not dialing %a - target host did not match remote host %a', ma, connection.remoteAddr)
330
+ return false
331
+ }
338
332
 
339
- if (ourHosts.includes(options.host)) {
340
- // don't try to dial nodes on the same host as us
341
- return false
342
- }
333
+ if (ourHosts.includes(options.host)) {
334
+ // don't try to dial nodes on the same host as us
335
+ return false
336
+ }
337
+
338
+ if (this.components.transportManager.dialTransportForMultiaddr(ma) == null) {
339
+ // skip any Multiaddrs that have transports we do not support
340
+ this.log.trace('not dialing %a - transport unsupported', ma)
341
+ return false
342
+ }
343
343
 
344
- if (this.components.transportManager.dialTransportForMultiaddr(ma) == null) {
345
- // skip any Multiaddrs that have transports we do not support
346
- this.log.trace('not dialing %a - transport unsupported', ma)
344
+ return true
345
+ } catch {
346
+ // skip any addresses that cannot be parsed (memory, webrtc incoming,
347
+ // etc)
347
348
  return false
348
349
  }
349
-
350
- return true
351
350
  })
352
351
  .map(ma => {
353
352
  if (ma.getPeerId() == null) {
@@ -394,7 +393,7 @@ export class AutoNATService implements Startable {
394
393
  type: Message.MessageType.DIAL_RESPONSE,
395
394
  dialResponse: {
396
395
  status: Message.ResponseStatus.OK,
397
- addr: connection.remoteAddr.decapsulateCode(protocols('p2p').code).bytes
396
+ addr: connection.remoteAddr.decapsulateCode(CODE_P2P).bytes
398
397
  }
399
398
  }
400
399
  } catch (err: any) {
@@ -623,7 +622,7 @@ export class AutoNATService implements Startable {
623
622
  const signal = AbortSignal.timeout(this.timeout)
624
623
  setMaxListeners(Infinity, signal)
625
624
 
626
- this.log.trace('asking %p to verify multiaddr %s', connection.remotePeer, options.multiaddr)
625
+ this.log.trace('asking %a to verify multiaddr %s', connection.remoteAddr, options.multiaddr)
627
626
 
628
627
  const stream = await connection.newStream(this.protocol, {
629
628
  signal
@@ -1,8 +0,0 @@
1
- {
2
- "AutoNATComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_autonat.AutoNATComponents.html",
3
- ".:AutoNATComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_autonat.AutoNATComponents.html",
4
- "AutoNATServiceInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_autonat.AutoNATServiceInit.html",
5
- ".:AutoNATServiceInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_autonat.AutoNATServiceInit.html",
6
- "autoNAT": "https://libp2p.github.io/js-libp2p/functions/_libp2p_autonat.autoNAT.html",
7
- ".:autoNAT": "https://libp2p.github.io/js-libp2p/functions/_libp2p_autonat.autoNAT.html"
8
- }