libp2p 0.43.4 → 0.44.0

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.
Files changed (105) hide show
  1. package/dist/index.min.js +30 -30
  2. package/dist/src/autonat/index.d.ts +1 -2
  3. package/dist/src/autonat/index.d.ts.map +1 -1
  4. package/dist/src/autonat/index.js +4 -6
  5. package/dist/src/autonat/index.js.map +1 -1
  6. package/dist/src/circuit-relay/transport/reservation-store.d.ts +1 -1
  7. package/dist/src/circuit-relay/transport/reservation-store.d.ts.map +1 -1
  8. package/dist/src/circuit-relay/utils.d.ts.map +1 -1
  9. package/dist/src/circuit-relay/utils.js +3 -1
  10. package/dist/src/circuit-relay/utils.js.map +1 -1
  11. package/dist/src/components.d.ts +1 -6
  12. package/dist/src/components.d.ts.map +1 -1
  13. package/dist/src/components.js +0 -10
  14. package/dist/src/components.js.map +1 -1
  15. package/dist/src/config.d.ts.map +1 -1
  16. package/dist/src/config.js +0 -9
  17. package/dist/src/config.js.map +1 -1
  18. package/dist/src/connection-manager/auto-dial.d.ts +36 -0
  19. package/dist/src/connection-manager/auto-dial.d.ts.map +1 -0
  20. package/dist/src/connection-manager/auto-dial.js +122 -0
  21. package/dist/src/connection-manager/auto-dial.js.map +1 -0
  22. package/dist/src/connection-manager/connection-pruner.d.ts +28 -0
  23. package/dist/src/connection-manager/connection-pruner.d.ts.map +1 -0
  24. package/dist/src/connection-manager/connection-pruner.js +96 -0
  25. package/dist/src/connection-manager/connection-pruner.js.map +1 -0
  26. package/dist/src/connection-manager/constants.d.ts +49 -0
  27. package/dist/src/connection-manager/constants.d.ts.map +1 -0
  28. package/dist/src/connection-manager/constants.js +49 -0
  29. package/dist/src/connection-manager/constants.js.map +1 -0
  30. package/dist/src/connection-manager/dial-queue.d.ts +77 -0
  31. package/dist/src/connection-manager/dial-queue.d.ts.map +1 -0
  32. package/dist/src/connection-manager/dial-queue.js +366 -0
  33. package/dist/src/connection-manager/dial-queue.js.map +1 -0
  34. package/dist/src/connection-manager/index.d.ts +65 -69
  35. package/dist/src/connection-manager/index.d.ts.map +1 -1
  36. package/dist/src/connection-manager/index.js +116 -234
  37. package/dist/src/connection-manager/index.js.map +1 -1
  38. package/dist/src/connection-manager/utils.d.ts +9 -0
  39. package/dist/src/connection-manager/utils.d.ts.map +1 -0
  40. package/dist/src/connection-manager/utils.js +66 -0
  41. package/dist/src/connection-manager/utils.js.map +1 -0
  42. package/dist/src/fetch/index.js +3 -3
  43. package/dist/src/fetch/index.js.map +1 -1
  44. package/dist/src/identify/index.js +5 -5
  45. package/dist/src/identify/index.js.map +1 -1
  46. package/dist/src/insecure/index.d.ts.map +1 -1
  47. package/dist/src/insecure/index.js +3 -1
  48. package/dist/src/insecure/index.js.map +1 -1
  49. package/dist/src/libp2p.d.ts +10 -2
  50. package/dist/src/libp2p.d.ts.map +1 -1
  51. package/dist/src/libp2p.js +7 -13
  52. package/dist/src/libp2p.js.map +1 -1
  53. package/dist/src/upgrader.d.ts +1 -1
  54. package/dist/src/upgrader.d.ts.map +1 -1
  55. package/dist/src/upgrader.js +2 -1
  56. package/dist/src/upgrader.js.map +1 -1
  57. package/dist/typedoc-urls.json +1 -1
  58. package/package.json +18 -18
  59. package/src/autonat/index.ts +6 -9
  60. package/src/circuit-relay/transport/reservation-store.ts +1 -1
  61. package/src/circuit-relay/utils.ts +3 -1
  62. package/src/components.ts +1 -17
  63. package/src/config.ts +0 -9
  64. package/src/connection-manager/auto-dial.ts +171 -0
  65. package/src/connection-manager/connection-pruner.ts +137 -0
  66. package/src/connection-manager/constants.ts +60 -0
  67. package/src/connection-manager/dial-queue.ts +504 -0
  68. package/src/connection-manager/index.ts +190 -323
  69. package/src/connection-manager/utils.ts +76 -0
  70. package/src/fetch/index.ts +4 -4
  71. package/src/identify/index.ts +5 -5
  72. package/src/insecure/index.ts +5 -1
  73. package/src/libp2p.ts +17 -15
  74. package/src/upgrader.ts +3 -2
  75. package/src/version.ts +1 -1
  76. package/dist/src/connection-manager/auto-dialler.d.ts +0 -42
  77. package/dist/src/connection-manager/auto-dialler.d.ts.map +0 -1
  78. package/dist/src/connection-manager/auto-dialler.js +0 -105
  79. package/dist/src/connection-manager/auto-dialler.js.map +0 -1
  80. package/dist/src/connection-manager/dialer/dial-request.d.ts +0 -27
  81. package/dist/src/connection-manager/dialer/dial-request.d.ts.map +0 -1
  82. package/dist/src/connection-manager/dialer/dial-request.js +0 -114
  83. package/dist/src/connection-manager/dialer/dial-request.js.map +0 -1
  84. package/dist/src/connection-manager/dialer/index.d.ts +0 -121
  85. package/dist/src/connection-manager/dialer/index.d.ts.map +0 -1
  86. package/dist/src/connection-manager/dialer/index.js +0 -324
  87. package/dist/src/connection-manager/dialer/index.js.map +0 -1
  88. package/dist/src/connection-manager/latency-monitor.d.ts +0 -120
  89. package/dist/src/connection-manager/latency-monitor.d.ts.map +0 -1
  90. package/dist/src/connection-manager/latency-monitor.js +0 -220
  91. package/dist/src/connection-manager/latency-monitor.js.map +0 -1
  92. package/dist/src/connection-manager/visibility-change-emitter.d.ts +0 -66
  93. package/dist/src/connection-manager/visibility-change-emitter.d.ts.map +0 -1
  94. package/dist/src/connection-manager/visibility-change-emitter.js +0 -118
  95. package/dist/src/connection-manager/visibility-change-emitter.js.map +0 -1
  96. package/dist/src/constants.d.ts +0 -27
  97. package/dist/src/constants.d.ts.map +0 -1
  98. package/dist/src/constants.js +0 -31
  99. package/dist/src/constants.js.map +0 -1
  100. package/src/connection-manager/auto-dialler.ts +0 -158
  101. package/src/connection-manager/dialer/dial-request.ts +0 -144
  102. package/src/connection-manager/dialer/index.ts +0 -461
  103. package/src/connection-manager/latency-monitor.ts +0 -319
  104. package/src/connection-manager/visibility-change-emitter.ts +0 -135
  105. package/src/constants.ts +0 -36
@@ -1,68 +1,112 @@
1
1
  import { logger } from '@libp2p/logger';
2
2
  import { CodeError } from '@libp2p/interfaces/errors';
3
- import mergeOptions from 'merge-options';
4
- import { LatencyMonitor } from './latency-monitor.js';
5
3
  import { CustomEvent, EventEmitter } from '@libp2p/interfaces/events';
6
4
  import { codes } from '../errors.js';
7
- import { isPeerId } from '@libp2p/interface-peer-id';
8
5
  import { setMaxListeners } from 'events';
9
- import * as STATUS from '@libp2p/interface-connection/status';
10
6
  import { multiaddr } from '@multiformats/multiaddr';
11
- import { PeerMap } from '@libp2p/peer-collections';
12
- import { TimeoutController } from 'timeout-abort-controller';
13
7
  import { KEEP_ALIVE } from '@libp2p/interface-peer-store/tags';
14
8
  import { RateLimiterMemory } from 'rate-limiter-flexible';
15
9
  import { getPeerAddress } from '../get-peer.js';
10
+ import { AutoDial } from './auto-dial.js';
11
+ import { DialQueue } from './dial-queue.js';
12
+ import { ConnectionPruner } from './connection-pruner.js';
13
+ import { PeerMap } from '@libp2p/peer-collections';
14
+ import { publicAddressesFirst } from '@libp2p/utils/address-sort';
15
+ import { AUTO_DIAL_CONCURRENCY, AUTO_DIAL_PRIORITY, DIAL_TIMEOUT, INBOUND_CONNECTION_THRESHOLD, MAX_CONNECTIONS, MAX_INCOMING_PENDING_CONNECTIONS, MAX_PARALLEL_DIALS, MAX_PEER_ADDRS_TO_DIAL, MIN_CONNECTIONS } from './constants.js';
16
+ import { dnsaddrResolver } from '@multiformats/multiaddr/resolvers';
16
17
  const log = logger('libp2p:connection-manager');
18
+ const DEFAULT_DIAL_PRIORITY = 50;
17
19
  const defaultOptions = {
18
- maxConnections: Infinity,
19
- minConnections: 0,
20
- maxEventLoopDelay: Infinity,
21
- pollInterval: 2000,
22
- autoDialInterval: 10000,
23
- inboundConnectionThreshold: 5,
24
- maxIncomingPendingConnections: 10
20
+ minConnections: MIN_CONNECTIONS,
21
+ maxConnections: MAX_CONNECTIONS,
22
+ inboundConnectionThreshold: INBOUND_CONNECTION_THRESHOLD,
23
+ maxIncomingPendingConnections: MAX_INCOMING_PENDING_CONNECTIONS,
24
+ autoDialConcurrency: AUTO_DIAL_CONCURRENCY,
25
+ autoDialPriority: AUTO_DIAL_PRIORITY
25
26
  };
26
- const STARTUP_RECONNECT_TIMEOUT = 60000;
27
27
  /**
28
28
  * Responsible for managing known connections.
29
29
  */
30
30
  export class DefaultConnectionManager extends EventEmitter {
31
- constructor(components, init) {
31
+ constructor(components, init = {}) {
32
32
  super();
33
- this.opts = mergeOptions.call({ ignoreUndefined: true }, defaultOptions, init);
34
- if (this.opts.maxConnections < this.opts.minConnections) {
33
+ this.maxConnections = init.maxConnections ?? defaultOptions.maxConnections;
34
+ const minConnections = init.minConnections ?? defaultOptions.minConnections;
35
+ if (this.maxConnections < minConnections) {
35
36
  throw new CodeError('Connection Manager maxConnections must be greater than minConnections', codes.ERR_INVALID_PARAMETERS);
36
37
  }
37
- log('options: %o', this.opts);
38
- this.components = components;
39
38
  /**
40
39
  * Map of connections per peer
41
40
  */
42
- this.connections = new Map();
41
+ this.connections = new PeerMap();
43
42
  this.started = false;
44
- if (init.maxEventLoopDelay != null && init.maxEventLoopDelay > 0 && init.maxEventLoopDelay !== Infinity) {
45
- this.latencyMonitor = new LatencyMonitor({
46
- latencyCheckIntervalMs: init.pollInterval,
47
- dataEmitIntervalMs: init.pollInterval
48
- });
49
- }
50
43
  try {
51
44
  // This emitter gets listened to a lot
52
45
  setMaxListeners?.(Infinity, this);
53
46
  }
54
47
  catch { }
48
+ this.peerStore = components.peerStore;
49
+ this.metrics = components.metrics;
55
50
  this.onConnect = this.onConnect.bind(this);
56
51
  this.onDisconnect = this.onDisconnect.bind(this);
57
- this.startupReconnectTimeout = init.startupReconnectTimeout ?? STARTUP_RECONNECT_TIMEOUT;
58
- this.dialTimeout = init.dialTimeout ?? 30000;
52
+ // allow/deny lists
59
53
  this.allow = (init.allow ?? []).map(ma => multiaddr(ma));
60
54
  this.deny = (init.deny ?? []).map(ma => multiaddr(ma));
55
+ this.incomingPendingConnections = 0;
56
+ this.maxIncomingPendingConnections = init.maxIncomingPendingConnections ?? defaultOptions.maxIncomingPendingConnections;
57
+ // controls individual peers trying to dial us too quickly
61
58
  this.inboundConnectionRateLimiter = new RateLimiterMemory({
62
- points: this.opts.inboundConnectionThreshold,
59
+ points: init.inboundConnectionThreshold ?? defaultOptions.inboundConnectionThreshold,
63
60
  duration: 1
64
61
  });
65
- this.incomingPendingConnections = 0;
62
+ // controls what happens when we don't have enough connections
63
+ this.autoDial = new AutoDial({
64
+ connectionManager: this,
65
+ peerStore: components.peerStore
66
+ }, {
67
+ minConnections,
68
+ autoDialConcurrency: init.autoDialConcurrency ?? defaultOptions.autoDialConcurrency,
69
+ autoDialPriority: init.autoDialPriority ?? defaultOptions.autoDialPriority
70
+ });
71
+ // check the min connection limit whenever a peer disconnects
72
+ this.addEventListener('peer:disconnect', () => {
73
+ this.autoDial.autoDial()
74
+ .catch(err => {
75
+ log.error(err);
76
+ });
77
+ });
78
+ // controls what happens when we have too many connections
79
+ this.connectionPruner = new ConnectionPruner({
80
+ connectionManager: this,
81
+ peerStore: components.peerStore
82
+ }, {
83
+ maxConnections: this.maxConnections,
84
+ allow: this.allow
85
+ });
86
+ // check the max connection limit whenever a peer connects
87
+ this.addEventListener('peer:connect', () => {
88
+ this.connectionPruner.maybePruneConnections()
89
+ .catch(err => {
90
+ log.error(err);
91
+ });
92
+ });
93
+ this.dialQueue = new DialQueue({
94
+ peerId: components.peerId,
95
+ metrics: components.metrics,
96
+ peerStore: components.peerStore,
97
+ transportManager: components.transportManager,
98
+ connectionGater: components.connectionGater
99
+ }, {
100
+ addressSorter: init.addressSorter ?? publicAddressesFirst,
101
+ maxParallelDials: init.maxParallelDials ?? MAX_PARALLEL_DIALS,
102
+ maxPeerAddrsToDial: init.maxPeerAddrsToDial ?? MAX_PEER_ADDRS_TO_DIAL,
103
+ dialTimeout: init.dialTimeout ?? DIAL_TIMEOUT,
104
+ resolvers: init.resolvers ?? {
105
+ dnsaddr: dnsaddrResolver
106
+ }
107
+ });
108
+ components.upgrader.addEventListener('connection', this.onConnect);
109
+ components.upgrader.addEventListener('connectionEnd', this.onDisconnect);
66
110
  }
67
111
  isStarted() {
68
112
  return this.started;
@@ -73,7 +117,7 @@ export class DefaultConnectionManager extends EventEmitter {
73
117
  */
74
118
  async start() {
75
119
  // track inbound/outbound connections
76
- this.components.metrics?.registerMetricGroup('libp2p_connection_manager_connections', {
120
+ this.metrics?.registerMetricGroup('libp2p_connection_manager_connections', {
77
121
  calculate: () => {
78
122
  const metric = {
79
123
  inbound: 0,
@@ -93,7 +137,7 @@ export class DefaultConnectionManager extends EventEmitter {
93
137
  }
94
138
  });
95
139
  // track total number of streams per protocol
96
- this.components.metrics?.registerMetricGroup('libp2p_protocol_streams_total', {
140
+ this.metrics?.registerMetricGroup('libp2p_protocol_streams_total', {
97
141
  label: 'protocol',
98
142
  calculate: () => {
99
143
  const metric = {};
@@ -109,7 +153,7 @@ export class DefaultConnectionManager extends EventEmitter {
109
153
  }
110
154
  });
111
155
  // track 90th percentile of streams per protocol
112
- this.components.metrics?.registerMetricGroup('libp2p_connection_manager_protocol_streams_per_connection_90th_percentile', {
156
+ this.metrics?.registerMetricGroup('libp2p_connection_manager_protocol_streams_per_connection_90th_percentile', {
113
157
  label: 'protocol',
114
158
  calculate: () => {
115
159
  const allStreams = {};
@@ -135,38 +179,24 @@ export class DefaultConnectionManager extends EventEmitter {
135
179
  return metric;
136
180
  }
137
181
  });
138
- // latency monitor
139
- this.latencyMonitor?.start();
140
- this._onLatencyMeasure = this._onLatencyMeasure.bind(this);
141
- this.latencyMonitor?.addEventListener('data', this._onLatencyMeasure);
182
+ this.autoDial.start();
142
183
  this.started = true;
143
184
  log('started');
144
185
  }
145
186
  async afterStart() {
146
- this.components.upgrader.addEventListener('connection', this.onConnect);
147
- this.components.upgrader.addEventListener('connectionEnd', this.onDisconnect);
148
187
  // re-connect to any peers with the KEEP_ALIVE tag
149
188
  void Promise.resolve()
150
189
  .then(async () => {
151
190
  const keepAlivePeers = [];
152
- for (const peer of await this.components.peerStore.all()) {
153
- const tags = await this.components.peerStore.getTags(peer.id);
191
+ for (const peer of await this.peerStore.all()) {
192
+ const tags = await this.peerStore.getTags(peer.id);
154
193
  const hasKeepAlive = tags.filter(tag => tag.name === KEEP_ALIVE).length > 0;
155
194
  if (hasKeepAlive) {
156
195
  keepAlivePeers.push(peer.id);
157
196
  }
158
197
  }
159
- this.connectOnStartupController?.clear();
160
- this.connectOnStartupController = new TimeoutController(this.startupReconnectTimeout);
161
- try {
162
- // fails on node < 15.4
163
- setMaxListeners?.(Infinity, this.connectOnStartupController.signal);
164
- }
165
- catch { }
166
198
  await Promise.all(keepAlivePeers.map(async (peer) => {
167
- await this.openConnection(peer, {
168
- signal: this.connectOnStartupController?.signal
169
- })
199
+ await this.openConnection(peer)
170
200
  .catch(err => {
171
201
  log.error(err);
172
202
  });
@@ -174,31 +204,15 @@ export class DefaultConnectionManager extends EventEmitter {
174
204
  })
175
205
  .catch(err => {
176
206
  log.error(err);
177
- })
178
- .finally(() => {
179
- this.connectOnStartupController?.clear();
180
207
  });
181
- }
182
- async beforeStop() {
183
- // if we are still dialing KEEP_ALIVE peers, abort those dials
184
- this.connectOnStartupController?.abort();
185
- this.components.upgrader.removeEventListener('connection', this.onConnect);
186
- this.components.upgrader.removeEventListener('connectionEnd', this.onDisconnect);
208
+ this.autoDial.afterStart();
187
209
  }
188
210
  /**
189
211
  * Stops the Connection Manager
190
212
  */
191
213
  async stop() {
192
- this.latencyMonitor?.removeEventListener('data', this._onLatencyMeasure);
193
- this.latencyMonitor?.stop();
194
- this.started = false;
195
- await this._close();
196
- log('stopped');
197
- }
198
- /**
199
- * Cleans up the connections
200
- */
201
- async _close() {
214
+ this.dialQueue.stop();
215
+ this.autoDial.stop();
202
216
  // Close all connections we're tracking
203
217
  const tasks = [];
204
218
  for (const connectionList of this.connections.values()) {
@@ -216,6 +230,7 @@ export class DefaultConnectionManager extends EventEmitter {
216
230
  log('closing %d connections', tasks.length);
217
231
  await Promise.all(tasks);
218
232
  this.connections.clear();
233
+ log('stopped');
219
234
  }
220
235
  onConnect(evt) {
221
236
  void this._onConnect(evt).catch(err => {
@@ -233,20 +248,16 @@ export class DefaultConnectionManager extends EventEmitter {
233
248
  return;
234
249
  }
235
250
  const peerId = connection.remotePeer;
236
- const peerIdStr = peerId.toString();
237
- const storedConns = this.connections.get(peerIdStr);
251
+ const storedConns = this.connections.get(peerId);
238
252
  if (storedConns != null) {
239
253
  storedConns.push(connection);
240
254
  }
241
255
  else {
242
- this.connections.set(peerIdStr, [connection]);
256
+ this.connections.set(peerId, [connection]);
243
257
  }
244
258
  if (peerId.publicKey != null) {
245
- await this.components.peerStore.keyBook.set(peerId, peerId.publicKey);
259
+ await this.peerStore.keyBook.set(peerId, peerId.publicKey);
246
260
  }
247
- const numConnections = this.getConnections().length;
248
- const toPrune = numConnections - this.opts.maxConnections;
249
- await this._checkMaxLimit('maxConnections', numConnections, toPrune);
250
261
  this.dispatchEvent(new CustomEvent('peer:connect', { detail: connection }));
251
262
  }
252
263
  /**
@@ -258,7 +269,7 @@ export class DefaultConnectionManager extends EventEmitter {
258
269
  // This can happen when we are in the process of shutting down the node
259
270
  return;
260
271
  }
261
- const peerId = connection.remotePeer.toString();
272
+ const peerId = connection.remotePeer;
262
273
  let storedConn = this.connections.get(peerId);
263
274
  if (storedConn != null && storedConn.length > 1) {
264
275
  storedConn = storedConn.filter((conn) => conn.id !== connection.id);
@@ -271,7 +282,7 @@ export class DefaultConnectionManager extends EventEmitter {
271
282
  }
272
283
  getConnections(peerId) {
273
284
  if (peerId != null) {
274
- return this.connections.get(peerId.toString()) ?? [];
285
+ return this.connections.get(peerId) ?? [];
275
286
  }
276
287
  let conns = [];
277
288
  for (const c of this.connections.values()) {
@@ -283,176 +294,44 @@ export class DefaultConnectionManager extends EventEmitter {
283
294
  return this.connections;
284
295
  }
285
296
  async openConnection(peerIdOrMultiaddr, options = {}) {
286
- const { peerId, multiaddrs } = getPeerAddress(peerIdOrMultiaddr);
287
- if (peerId == null && multiaddrs.length === 0) {
288
- throw new CodeError('Can only open connections to PeerIds or Multiaddrs', codes.ERR_INVALID_PARAMETERS);
289
- }
297
+ const { peerId } = getPeerAddress(peerIdOrMultiaddr);
290
298
  if (peerId != null) {
291
- log('dial to', peerId);
299
+ log('dial %p', peerId);
292
300
  const existingConnections = this.getConnections(peerId);
293
301
  if (existingConnections.length > 0) {
294
302
  log('had an existing connection to %p', peerId);
295
303
  return existingConnections[0];
296
304
  }
297
305
  }
298
- let timeoutController;
299
- if (options?.signal == null) {
300
- timeoutController = new TimeoutController(this.dialTimeout);
301
- options.signal = timeoutController.signal;
302
- try {
303
- // fails on node < 15.4
304
- setMaxListeners?.(Infinity, timeoutController.signal);
305
- }
306
- catch { }
306
+ const connection = await this.dialQueue.dial(peerIdOrMultiaddr, {
307
+ ...options,
308
+ priority: options.priority ?? DEFAULT_DIAL_PRIORITY
309
+ });
310
+ let peerConnections = this.connections.get(connection.remotePeer);
311
+ if (peerConnections == null) {
312
+ peerConnections = [];
313
+ this.connections.set(connection.remotePeer, peerConnections);
307
314
  }
308
- try {
309
- // @ts-expect-error until https://github.com/libp2p/js-libp2p-interfaces/pull/351 is merged
310
- const connection = await this.components.dialer.dial(peerIdOrMultiaddr, options);
311
- let peerConnections = this.connections.get(connection.remotePeer.toString());
312
- if (peerConnections == null) {
313
- peerConnections = [];
314
- this.connections.set(connection.remotePeer.toString(), peerConnections);
315
- }
316
- // we get notified of connections via the Upgrader emitting "connection"
317
- // events, double check we aren't already tracking this connection before
318
- // storing it
319
- let trackedConnection = false;
320
- for (const conn of peerConnections) {
321
- if (conn.id === connection.id) {
322
- trackedConnection = true;
323
- }
315
+ // we get notified of connections via the Upgrader emitting "connection"
316
+ // events, double check we aren't already tracking this connection before
317
+ // storing it
318
+ let trackedConnection = false;
319
+ for (const conn of peerConnections) {
320
+ if (conn.id === connection.id) {
321
+ trackedConnection = true;
324
322
  }
325
- if (!trackedConnection) {
326
- peerConnections.push(connection);
327
- }
328
- return connection;
329
323
  }
330
- finally {
331
- if (timeoutController != null) {
332
- timeoutController.clear();
333
- }
324
+ if (!trackedConnection) {
325
+ peerConnections.push(connection);
334
326
  }
327
+ return connection;
335
328
  }
336
329
  async closeConnections(peerId) {
337
- const connections = this.connections.get(peerId.toString()) ?? [];
330
+ const connections = this.connections.get(peerId) ?? [];
338
331
  await Promise.all(connections.map(async (connection) => {
339
332
  await connection.close();
340
333
  }));
341
334
  }
342
- /**
343
- * Get all open connections with a peer
344
- */
345
- getAll(peerId) {
346
- if (!isPeerId(peerId)) {
347
- throw new CodeError('peerId must be an instance of peer-id', codes.ERR_INVALID_PARAMETERS);
348
- }
349
- const id = peerId.toString();
350
- const connections = this.connections.get(id);
351
- // Return all open connections
352
- if (connections != null) {
353
- return connections.filter(connection => connection.stat.status === STATUS.OPEN);
354
- }
355
- return [];
356
- }
357
- /**
358
- * If the event loop is slow, maybe close a connection
359
- */
360
- _onLatencyMeasure(evt) {
361
- const { detail: summary } = evt;
362
- this._checkMaxLimit('maxEventLoopDelay', summary.avgMs, 1)
363
- .catch(err => {
364
- log.error(err);
365
- });
366
- }
367
- /**
368
- * If the `value` of `name` has exceeded its limit, maybe close a connection
369
- */
370
- async _checkMaxLimit(name, value, toPrune = 1) {
371
- const limit = this.opts[name];
372
- if (limit == null) {
373
- log.trace('limit %s was not set so it cannot be applied', name);
374
- return;
375
- }
376
- if (limit === Infinity) {
377
- log.trace('limit %s is Infinity so it cannot be applied', name);
378
- return;
379
- }
380
- log.trace('checking limit of %s. current value: %d of %d', name, value, limit);
381
- if (value > limit) {
382
- log('%s: limit exceeded: %p, %d/%d, pruning %d connection(s)', this.components.peerId, name, value, limit, toPrune);
383
- await this._pruneConnections(toPrune);
384
- }
385
- }
386
- /**
387
- * If we have more connections than our maximum, select some excess connections
388
- * to prune based on peer value
389
- */
390
- async _pruneConnections(toPrune) {
391
- const connections = this.getConnections();
392
- const peerValues = new PeerMap();
393
- // work out peer values
394
- for (const connection of connections) {
395
- const remotePeer = connection.remotePeer;
396
- if (peerValues.has(remotePeer)) {
397
- continue;
398
- }
399
- const tags = await this.components.peerStore.getTags(remotePeer);
400
- // sum all tag values
401
- peerValues.set(remotePeer, tags.reduce((acc, curr) => {
402
- return acc + curr.value;
403
- }, 0));
404
- }
405
- // sort by value, lowest to highest
406
- const sortedConnections = connections.sort((a, b) => {
407
- const peerAValue = peerValues.get(a.remotePeer) ?? 0;
408
- const peerBValue = peerValues.get(b.remotePeer) ?? 0;
409
- if (peerAValue > peerBValue) {
410
- return 1;
411
- }
412
- if (peerAValue < peerBValue) {
413
- return -1;
414
- }
415
- // if the peers have an equal tag value then we want to close short-lived connections first
416
- const connectionALifespan = a.stat.timeline.open;
417
- const connectionBLifespan = b.stat.timeline.open;
418
- if (connectionALifespan < connectionBLifespan) {
419
- return 1;
420
- }
421
- if (connectionALifespan > connectionBLifespan) {
422
- return -1;
423
- }
424
- return 0;
425
- });
426
- // close some connections
427
- const toClose = [];
428
- for (const connection of sortedConnections) {
429
- log('too many connections open - closing a connection to %p', connection.remotePeer);
430
- // check allow list
431
- const connectionInAllowList = this.allow.some((ma) => {
432
- return connection.remoteAddr.toString().startsWith(ma.toString());
433
- });
434
- // Connections in the allow list should be excluded from pruning
435
- if (!connectionInAllowList) {
436
- toClose.push(connection);
437
- }
438
- if (toClose.length === toPrune) {
439
- break;
440
- }
441
- }
442
- // close connections
443
- await Promise.all(toClose.map(async (connection) => {
444
- try {
445
- await connection.close();
446
- }
447
- catch (err) {
448
- log.error(err);
449
- }
450
- // TODO: should not need to invoke this manually
451
- this.onDisconnect(new CustomEvent('connectionEnd', {
452
- detail: connection
453
- }));
454
- }));
455
- }
456
335
  async acceptIncomingConnection(maConn) {
457
336
  // check deny list
458
337
  const denyConnection = this.deny.some(ma => {
@@ -471,7 +350,7 @@ export class DefaultConnectionManager extends EventEmitter {
471
350
  return true;
472
351
  }
473
352
  // check pending connections
474
- if (this.incomingPendingConnections === this.opts.maxIncomingPendingConnections) {
353
+ if (this.incomingPendingConnections === this.maxIncomingPendingConnections) {
475
354
  log('connection from %s refused - incomingPendingConnections exceeded by peer %s', maConn.remoteAddr);
476
355
  return false;
477
356
  }
@@ -485,7 +364,7 @@ export class DefaultConnectionManager extends EventEmitter {
485
364
  return false;
486
365
  }
487
366
  }
488
- if (this.getConnections().length < this.opts.maxConnections) {
367
+ if (this.getConnections().length < this.maxConnections) {
489
368
  this.incomingPendingConnections++;
490
369
  return true;
491
370
  }
@@ -495,5 +374,8 @@ export class DefaultConnectionManager extends EventEmitter {
495
374
  afterUpgradeInbound() {
496
375
  this.incomingPendingConnections--;
497
376
  }
377
+ getDialQueue() {
378
+ return this.dialQueue.pendingDials;
379
+ }
498
380
  }
499
381
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/connection-manager/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/connection-manager/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { AbortOptions } from '@multiformats/multiaddr';
2
+ import type { Multiaddr } from '@multiformats/multiaddr';
3
+ import { ClearableSignal } from 'any-signal';
4
+ /**
5
+ * Resolve multiaddr recursively
6
+ */
7
+ export declare function resolveMultiaddrs(ma: Multiaddr, options: AbortOptions): Promise<Multiaddr[]>;
8
+ export declare function combineSignals(...signals: Array<AbortSignal | undefined>): ClearableSignal;
9
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/connection-manager/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAa,MAAM,yBAAyB,CAAA;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,OAAO,EAAE,eAAe,EAAa,MAAM,YAAY,CAAA;AAKvD;;GAEG;AACH,wBAAsB,iBAAiB,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CA0BnG;AAgBD,wBAAgB,cAAc,CAAE,GAAG,OAAO,EAAE,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC,GAAG,eAAe,CAsB3F"}
@@ -0,0 +1,66 @@
1
+ import { multiaddr } from '@multiformats/multiaddr';
2
+ import { logger } from '@libp2p/logger';
3
+ import { anySignal } from 'any-signal';
4
+ import { setMaxListeners } from 'events';
5
+ const log = logger('libp2p:connection-manager:utils');
6
+ /**
7
+ * Resolve multiaddr recursively
8
+ */
9
+ export async function resolveMultiaddrs(ma, options) {
10
+ // TODO: recursive logic should live in multiaddr once dns4/dns6 support is in place
11
+ // Now only supporting resolve for dnsaddr
12
+ const resolvableProto = ma.protoNames().includes('dnsaddr');
13
+ // Multiaddr is not resolvable? End recursion!
14
+ if (!resolvableProto) {
15
+ return [ma];
16
+ }
17
+ const resolvedMultiaddrs = await resolveRecord(ma, options);
18
+ const recursiveMultiaddrs = await Promise.all(resolvedMultiaddrs.map(async (nm) => {
19
+ return await resolveMultiaddrs(nm, options);
20
+ }));
21
+ const addrs = recursiveMultiaddrs.flat();
22
+ const output = addrs.reduce((array, newM) => {
23
+ if (array.find(m => m.equals(newM)) == null) {
24
+ array.push(newM);
25
+ }
26
+ return array;
27
+ }, ([]));
28
+ log('resolved %s to', ma, output.map(ma => ma.toString()));
29
+ return output;
30
+ }
31
+ /**
32
+ * Resolve a given multiaddr. If this fails, an empty array will be returned
33
+ */
34
+ async function resolveRecord(ma, options) {
35
+ try {
36
+ ma = multiaddr(ma.toString()); // Use current multiaddr module
37
+ const multiaddrs = await ma.resolve(options);
38
+ return multiaddrs;
39
+ }
40
+ catch (err) {
41
+ log.error(`multiaddr ${ma.toString()} could not be resolved`, err);
42
+ return [];
43
+ }
44
+ }
45
+ export function combineSignals(...signals) {
46
+ const sigs = [];
47
+ for (const sig of signals) {
48
+ if (sig != null) {
49
+ try {
50
+ // fails on node < 15.4
51
+ setMaxListeners?.(Infinity, sig);
52
+ }
53
+ catch { }
54
+ sigs.push(sig);
55
+ }
56
+ }
57
+ // let any signal abort the dial
58
+ const signal = anySignal(sigs);
59
+ try {
60
+ // fails on node < 15.4
61
+ setMaxListeners?.(Infinity, signal);
62
+ }
63
+ catch { }
64
+ return signal;
65
+ }
66
+ //# sourceMappingURL=utils.js.map