@libp2p/circuit-relay-v2 4.2.9-e86b39e5d → 4.2.10

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":"listener.d.ts","sourceRoot":"","sources":["../../../src/transport/listener.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAoB,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAChF,OAAO,KAAK,EAAE,eAAe,EAAU,QAAQ,EAAkB,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAClG,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAGnF,MAAM,WAAW,uCAAuC;IACtD,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,cAAc,EAAE,cAAc,CAAA;IAC9B,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,iCAAiC;IAChD,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAwID,wBAAgB,cAAc,CAAE,OAAO,EAAE,uCAAuC,GAAG,QAAQ,CAE1F"}
1
+ {"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../../src/transport/listener.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAoB,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAChF,OAAO,KAAK,EAAE,eAAe,EAAU,QAAQ,EAAkB,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAClG,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAGnF,MAAM,WAAW,uCAAuC;IACtD,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,cAAc,EAAE,cAAc,CAAA;IAC9B,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,iCAAiC;IAChD,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AA4JD,wBAAgB,cAAc,CAAE,OAAO,EAAE,uCAAuC,GAAG,QAAQ,CAE1F"}
@@ -41,6 +41,13 @@ class CircuitRelayTransportListener extends TypedEventEmitter {
41
41
  _onAddRelayPeer = (evt) => {
42
42
  const { details } = evt.detail;
43
43
  if (details.type === 'configured') {
44
+ // listen() applies a configured relay's initial reservation directly.
45
+ // This handler also fires for that initial event, but this.relay is not
46
+ // set yet so the guard below skips it. A later refresh fires with
47
+ // this.relay set, so re-apply it for our relay to pick up a changed address.
48
+ if (this.relay?.equals(evt.detail.relay) === true) {
49
+ this.addedRelay(evt.detail);
50
+ }
44
51
  return;
45
52
  }
46
53
  if (details.id !== this.reservationId) {
@@ -92,15 +99,25 @@ class CircuitRelayTransportListener extends TypedEventEmitter {
92
99
  addedRelay(reservation) {
93
100
  this.log('relay peer added %p', reservation.relay);
94
101
  this.relay = reservation.relay;
102
+ const previousAddrs = this.listeningAddrs;
95
103
  // add all addresses from the relay reservation
96
104
  this.listeningAddrs = reservation.details.reservation.addrs
97
105
  .map(buf => multiaddr(buf).encapsulate('/p2p-circuit'));
106
+ // confirm the refreshed addresses first so that failing to withdraw a stale
107
+ // one below cannot leave us with nothing advertised
98
108
  this.listeningAddrs.forEach(ma => {
99
109
  // mark as externally dialable
100
110
  this.addressManager.confirmObservedAddr(ma, {
101
111
  type: 'transport'
102
112
  });
103
113
  });
114
+ // then withdraw any previously advertised address the refresh no longer
115
+ // includes, otherwise a changed relay address leaves the stale one advertised
116
+ previousAddrs
117
+ .filter(ma => !this.listeningAddrs.some(current => current.equals(ma)))
118
+ .forEach(ma => {
119
+ this.addressManager.removeObservedAddr(ma);
120
+ });
104
121
  // if that succeeded announce listen addresses change
105
122
  queueMicrotask(() => {
106
123
  this.safeDispatchEvent('listening');
@@ -1 +1 @@
1
- {"version":3,"file":"listener.js","sourceRoot":"","sources":["../../../src/transport/listener.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"listener.js","sourceRoot":"","sources":["../../../src/transport/listener.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"reservation-store.d.ts","sourceRoot":"","sources":["../../../src/transport/reservation-store.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,YAAY,CAAA;AAM/D,OAAO,KAAK,EAAE,mCAAmC,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AACrG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAsC,MAAM,EAAa,SAAS,EAAoB,MAAM,mBAAmB,CAAA;AAc3H,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,YAAY,CAAA;AAEnD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;IACtC,IAAI,EAAE,YAAY,CAAA;IAClB,WAAW,EAAE,WAAW,CAAA;IAExB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;IACtC,IAAI,EAAE,YAAY,CAAA;IAClB,WAAW,EAAE,WAAW,CAAA;IAExB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,MAAM,UAAU,GAAG,oBAAoB,GAAG,oBAAoB,CAAA;AAEpE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,UAAU,CAAA;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,yBAAyB,EAAE,WAAW,CAAA;IACtC,2BAA2B,EAAE,WAAW,CAAA;IACxC,eAAe,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAA;IAC9C,2BAA2B,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAA;CAC3D;AAED,qBAAa,gBAAiB,SAAQ,iBAAiB,CAAC,sBAAsB,CAAE,YAAW,SAAS;;IAClG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IACvD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAU;IAC9C,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAQ;IAClD,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAQ;IACrD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,WAAW,CAAQ;gBAEd,UAAU,EAAE,mCAAmC,EAAE,IAAI,CAAC,EAAE,6BAA6B;IAwClG,SAAS,IAAK,OAAO;IAIrB,KAAK,IAAK,IAAI;IAId,UAAU,IAAK,IAAI;IAmCnB,IAAI,IAAK,IAAI;IASb,YAAY,IAAK,MAAM;IAUvB;;;;;OAKG;IACG,QAAQ,CAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA0K3E,cAAc,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAIxC,cAAc,CAAE,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIxD,gBAAgB,CAAE,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM;IAc3C,kBAAkB,IAAK,IAAI;CAyH5B"}
1
+ {"version":3,"file":"reservation-store.d.ts","sourceRoot":"","sources":["../../../src/transport/reservation-store.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,YAAY,CAAA;AAM/D,OAAO,KAAK,EAAE,mCAAmC,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AACrG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAsC,MAAM,EAAa,SAAS,EAAoB,MAAM,mBAAmB,CAAA;AAc3H,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,YAAY,CAAA;AAEnD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;IACtC,IAAI,EAAE,YAAY,CAAA;IAClB,WAAW,EAAE,WAAW,CAAA;IAExB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;IACtC,IAAI,EAAE,YAAY,CAAA;IAClB,WAAW,EAAE,WAAW,CAAA;IAExB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,MAAM,UAAU,GAAG,oBAAoB,GAAG,oBAAoB,CAAA;AAEpE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,UAAU,CAAA;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,yBAAyB,EAAE,WAAW,CAAA;IACtC,2BAA2B,EAAE,WAAW,CAAA;IACxC,eAAe,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAA;IAC9C,2BAA2B,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAA;CAC3D;AAED,qBAAa,gBAAiB,SAAQ,iBAAiB,CAAC,sBAAsB,CAAE,YAAW,SAAS;;IAClG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IACvD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAU;IAC9C,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAQ;IAClD,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAQ;IACrD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,WAAW,CAAQ;gBAEd,UAAU,EAAE,mCAAmC,EAAE,IAAI,CAAC,EAAE,6BAA6B;IAwClG,SAAS,IAAK,OAAO;IAIrB,KAAK,IAAK,IAAI;IAId,UAAU,IAAK,IAAI;IAmCnB,IAAI,IAAK,IAAI;IASb,YAAY,IAAK,MAAM;IAUvB;;;;;OAKG;IACG,QAAQ,CAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAgM3E,cAAc,CAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAIxC,cAAc,CAAE,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIxD,gBAAgB,CAAE,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM;IAc3C,kBAAkB,IAAK,IAAI;CA4H5B"}
@@ -58,7 +58,7 @@ export class ReservationStore extends TypedEventEmitter {
58
58
  }
59
59
  this.#removeReservation(evt.detail.remotePeer)
60
60
  .catch(err => {
61
- this.log('could not remove relay %p - %e', evt.detail, err);
61
+ this.log.error('could not remove relay %p - %e', evt.detail.remotePeer, err);
62
62
  });
63
63
  });
64
64
  }
@@ -153,9 +153,16 @@ export class ReservationStore extends TypedEventEmitter {
153
153
  details: existingReservation
154
154
  };
155
155
  }
156
- await this.#removeReservation(peerId);
156
+ // keep a still-connected reservation advertised while we refresh it in
157
+ // place - the catch path below removes it if the refresh fails. only
158
+ // drop it up front when the relay connection is already gone.
159
+ if (!connected) {
160
+ await this.#removeReservation(peerId);
161
+ }
157
162
  }
158
- if (type === 'discovered' && this.pendingReservations.length === 0) {
163
+ // a refresh keeps the slot it already holds; only a brand new discovered
164
+ // reservation needs a free pending slot
165
+ if (type === 'discovered' && existingReservation == null && this.pendingReservations.length === 0) {
159
166
  throw new HadEnoughRelaysError('Not making reservation on discovered relay because we do not need any more relays');
160
167
  }
161
168
  const signal = AbortSignal.timeout(this.reservationCompletionTimeout);
@@ -186,9 +193,18 @@ export class ReservationStore extends TypedEventEmitter {
186
193
  });
187
194
  }, timeoutDuration);
188
195
  let res;
189
- // assign a reservation id if one was requested
190
196
  if (type === 'discovered') {
191
- const id = this.pendingReservations.pop();
197
+ // a live refresh reuses the slot id its reservation still holds. if
198
+ // that entry was removed while we were refreshing (a disconnected
199
+ // refresh, or a concurrent connection:close) its id went back to the
200
+ // pool, so claim a fresh one - an id is never both live and pending.
201
+ // this re-reads instead of trusting existingReservation because only
202
+ // one addRelay runs per peer at a time, so the entry here is only ever
203
+ // our own (removed or not), never another reservation's
204
+ const live = this.reservations.get(peerId);
205
+ const id = live?.type === 'discovered'
206
+ ? live.id
207
+ : this.pendingReservations.pop();
192
208
  if (id == null) {
193
209
  throw new HadEnoughRelaysError('Made reservation on relay but did not need any more discovered relays');
194
210
  }
@@ -208,6 +224,11 @@ export class ReservationStore extends TypedEventEmitter {
208
224
  connection: connection.id
209
225
  };
210
226
  }
227
+ // clear the previous reservation's refresh timer before replacing it,
228
+ // otherwise it stays armed and later fires against the new reservation
229
+ if (existingReservation != null) {
230
+ clearTimeout(existingReservation.timeout);
231
+ }
211
232
  // we've managed to create a reservation successfully
212
233
  this.reservations.set(peerId, res);
213
234
  // ensure we don't close the connection to the relay
@@ -333,12 +354,9 @@ export class ReservationStore extends TypedEventEmitter {
333
354
  if (reservation.type === 'discovered') {
334
355
  this.pendingReservations.push(reservation.id);
335
356
  }
336
- // untag the relay
337
- await this.peerStore.merge(peerId, {
338
- tags: {
339
- [KEEP_ALIVE_TAG]: undefined
340
- }
341
- });
357
+ // withdraw the address and re-check the relay count from the in-memory
358
+ // state updated above, independent of the tag write below, so a datastore
359
+ // failure cannot strand the advertised address or stall rediscovery
342
360
  this.safeDispatchEvent('relay:removed', {
343
361
  detail: {
344
362
  relay: peerId,
@@ -347,6 +365,12 @@ export class ReservationStore extends TypedEventEmitter {
347
365
  });
348
366
  // maybe trigger discovery of new relays
349
367
  this.#checkReservationCount();
368
+ // untag the relay so the connection manager may reap the connection
369
+ await this.peerStore.merge(peerId, {
370
+ tags: {
371
+ [KEEP_ALIVE_TAG]: undefined
372
+ }
373
+ });
350
374
  }
351
375
  #checkReservationCount() {
352
376
  if (this.pendingReservations.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"reservation-store.js","sourceRoot":"","sources":["../../../src/transport/reservation-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reservation-store.js","sourceRoot":"","sources":["../../../src/transport/reservation-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ {
2
+ "LimitDataFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.Limit.LimitDataFieldEvent.html",
3
+ "LimitDurationFieldEvent": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.Limit.LimitDurationFieldEvent.html",
4
+ "codec": "https://libp2p.github.io/js-libp2p/functions/_libp2p_circuit-relay-v2.Limit.codec.html",
5
+ "decode": "https://libp2p.github.io/js-libp2p/functions/_libp2p_circuit-relay-v2.Limit.decode.html",
6
+ "encode": "https://libp2p.github.io/js-libp2p/functions/_libp2p_circuit-relay-v2.Limit.encode.html",
7
+ "stream": "https://libp2p.github.io/js-libp2p/functions/_libp2p_circuit-relay-v2.Limit.stream.html",
8
+ "CircuitRelayServerComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.CircuitRelayServerComponents.html",
9
+ ".:CircuitRelayServerComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.CircuitRelayServerComponents.html",
10
+ "CircuitRelayServerInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.CircuitRelayServerInit.html",
11
+ ".:CircuitRelayServerInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.CircuitRelayServerInit.html",
12
+ "CircuitRelayService": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.CircuitRelayService.html",
13
+ ".:CircuitRelayService": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.CircuitRelayService.html",
14
+ "CircuitRelayServiceEvents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.CircuitRelayServiceEvents.html",
15
+ ".:CircuitRelayServiceEvents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.CircuitRelayServiceEvents.html",
16
+ "CircuitRelayTransportComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.CircuitRelayTransportComponents.html",
17
+ ".:CircuitRelayTransportComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.CircuitRelayTransportComponents.html",
18
+ "CircuitRelayTransportInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.CircuitRelayTransportInit.html",
19
+ ".:CircuitRelayTransportInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.CircuitRelayTransportInit.html",
20
+ "Limit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.Limit.html",
21
+ "RelayDiscoveryComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.RelayDiscoveryComponents.html",
22
+ ".:RelayDiscoveryComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.RelayDiscoveryComponents.html",
23
+ "RelayDiscoveryEvents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.RelayDiscoveryEvents.html",
24
+ ".:RelayDiscoveryEvents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.RelayDiscoveryEvents.html",
25
+ "RelayDiscoveryInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.RelayDiscoveryInit.html",
26
+ ".:RelayDiscoveryInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.RelayDiscoveryInit.html",
27
+ "RelayReservation": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.RelayReservation.html",
28
+ ".:RelayReservation": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.RelayReservation.html",
29
+ "ServerReservationStoreInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.ServerReservationStoreInit.html",
30
+ ".:ServerReservationStoreInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.ServerReservationStoreInit.html",
31
+ "TransportReservationStoreComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.TransportReservationStoreComponents.html",
32
+ ".:TransportReservationStoreComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.TransportReservationStoreComponents.html",
33
+ "TransportReservationStoreInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.TransportReservationStoreInit.html",
34
+ ".:TransportReservationStoreInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit-relay-v2.TransportReservationStoreInit.html",
35
+ "RELAY_V2_HOP_CODEC": "https://libp2p.github.io/js-libp2p/variables/_libp2p_circuit-relay-v2.RELAY_V2_HOP_CODEC.html",
36
+ "RELAY_V2_STOP_CODEC": "https://libp2p.github.io/js-libp2p/variables/_libp2p_circuit-relay-v2.RELAY_V2_STOP_CODEC.html",
37
+ "circuitRelayServer": "https://libp2p.github.io/js-libp2p/functions/_libp2p_circuit-relay-v2.circuitRelayServer.html",
38
+ ".:circuitRelayServer": "https://libp2p.github.io/js-libp2p/functions/_libp2p_circuit-relay-v2.circuitRelayServer.html",
39
+ "circuitRelayTransport": "https://libp2p.github.io/js-libp2p/functions/_libp2p_circuit-relay-v2.circuitRelayTransport.html",
40
+ ".:circuitRelayTransport": "https://libp2p.github.io/js-libp2p/functions/_libp2p_circuit-relay-v2.circuitRelayTransport.html"
41
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/circuit-relay-v2",
3
- "version": "4.2.9-e86b39e5d",
3
+ "version": "4.2.10",
4
4
  "description": "Implementation of Circuit Relay v2",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/transport-circuit-relay-v2#readme",
@@ -46,13 +46,13 @@
46
46
  "doc-check": "aegir doc-check"
47
47
  },
48
48
  "dependencies": {
49
- "@libp2p/crypto": "5.1.21-e86b39e5d",
50
- "@libp2p/interface": "3.2.5-e86b39e5d",
51
- "@libp2p/interface-internal": "3.1.9-e86b39e5d",
52
- "@libp2p/peer-collections": "7.0.24-e86b39e5d",
53
- "@libp2p/peer-id": "6.0.12-e86b39e5d",
54
- "@libp2p/peer-record": "9.0.13-e86b39e5d",
55
- "@libp2p/utils": "7.3.0-e86b39e5d",
49
+ "@libp2p/crypto": "^5.1.21",
50
+ "@libp2p/interface": "^3.2.5",
51
+ "@libp2p/interface-internal": "^3.1.10",
52
+ "@libp2p/peer-collections": "^7.0.25",
53
+ "@libp2p/peer-id": "^6.0.13",
54
+ "@libp2p/peer-record": "^9.0.14",
55
+ "@libp2p/utils": "^7.3.1",
56
56
  "@multiformats/multiaddr": "^13.0.3",
57
57
  "@multiformats/multiaddr-matcher": "^3.0.2",
58
58
  "any-signal": "^4.1.1",
@@ -66,7 +66,7 @@
66
66
  "uint8arrays": "^6.1.1"
67
67
  },
68
68
  "devDependencies": {
69
- "@libp2p/logger": "6.2.10-e86b39e5d",
69
+ "@libp2p/logger": "^6.2.11",
70
70
  "aegir": "^48.1.1",
71
71
  "delay": "^7.0.0",
72
72
  "it-all": "^3.0.9",
@@ -71,6 +71,14 @@ class CircuitRelayTransportListener extends TypedEventEmitter<ListenerEvents> im
71
71
  } = evt.detail
72
72
 
73
73
  if (details.type === 'configured') {
74
+ // listen() applies a configured relay's initial reservation directly.
75
+ // This handler also fires for that initial event, but this.relay is not
76
+ // set yet so the guard below skips it. A later refresh fires with
77
+ // this.relay set, so re-apply it for our relay to pick up a changed address.
78
+ if (this.relay?.equals(evt.detail.relay) === true) {
79
+ this.addedRelay(evt.detail)
80
+ }
81
+
74
82
  return
75
83
  }
76
84
 
@@ -136,10 +144,14 @@ class CircuitRelayTransportListener extends TypedEventEmitter<ListenerEvents> im
136
144
 
137
145
  this.relay = reservation.relay
138
146
 
147
+ const previousAddrs = this.listeningAddrs
148
+
139
149
  // add all addresses from the relay reservation
140
150
  this.listeningAddrs = reservation.details.reservation.addrs
141
151
  .map(buf => multiaddr(buf).encapsulate('/p2p-circuit'))
142
152
 
153
+ // confirm the refreshed addresses first so that failing to withdraw a stale
154
+ // one below cannot leave us with nothing advertised
143
155
  this.listeningAddrs.forEach(ma => {
144
156
  // mark as externally dialable
145
157
  this.addressManager.confirmObservedAddr(ma, {
@@ -147,6 +159,14 @@ class CircuitRelayTransportListener extends TypedEventEmitter<ListenerEvents> im
147
159
  })
148
160
  })
149
161
 
162
+ // then withdraw any previously advertised address the refresh no longer
163
+ // includes, otherwise a changed relay address leaves the stale one advertised
164
+ previousAddrs
165
+ .filter(ma => !this.listeningAddrs.some(current => current.equals(ma)))
166
+ .forEach(ma => {
167
+ this.addressManager.removeObservedAddr(ma)
168
+ })
169
+
150
170
  // if that succeeded announce listen addresses change
151
171
  queueMicrotask(() => {
152
172
  this.safeDispatchEvent('listening')
@@ -117,7 +117,7 @@ export class ReservationStore extends TypedEventEmitter<ReservationStoreEvents>
117
117
 
118
118
  this.#removeReservation(evt.detail.remotePeer)
119
119
  .catch(err => {
120
- this.log('could not remove relay %p - %e', evt.detail, err)
120
+ this.log.error('could not remove relay %p - %e', evt.detail.remotePeer, err)
121
121
  })
122
122
  })
123
123
  }
@@ -241,10 +241,17 @@ export class ReservationStore extends TypedEventEmitter<ReservationStoreEvents>
241
241
  } satisfies RelayReservation
242
242
  }
243
243
 
244
- await this.#removeReservation(peerId)
244
+ // keep a still-connected reservation advertised while we refresh it in
245
+ // place - the catch path below removes it if the refresh fails. only
246
+ // drop it up front when the relay connection is already gone.
247
+ if (!connected) {
248
+ await this.#removeReservation(peerId)
249
+ }
245
250
  }
246
251
 
247
- if (type === 'discovered' && this.pendingReservations.length === 0) {
252
+ // a refresh keeps the slot it already holds; only a brand new discovered
253
+ // reservation needs a free pending slot
254
+ if (type === 'discovered' && existingReservation == null && this.pendingReservations.length === 0) {
248
255
  throw new HadEnoughRelaysError('Not making reservation on discovered relay because we do not need any more relays')
249
256
  }
250
257
 
@@ -286,9 +293,18 @@ export class ReservationStore extends TypedEventEmitter<ReservationStoreEvents>
286
293
 
287
294
  let res: RelayEntry
288
295
 
289
- // assign a reservation id if one was requested
290
296
  if (type === 'discovered') {
291
- const id = this.pendingReservations.pop()
297
+ // a live refresh reuses the slot id its reservation still holds. if
298
+ // that entry was removed while we were refreshing (a disconnected
299
+ // refresh, or a concurrent connection:close) its id went back to the
300
+ // pool, so claim a fresh one - an id is never both live and pending.
301
+ // this re-reads instead of trusting existingReservation because only
302
+ // one addRelay runs per peer at a time, so the entry here is only ever
303
+ // our own (removed or not), never another reservation's
304
+ const live = this.reservations.get(peerId)
305
+ const id = live?.type === 'discovered'
306
+ ? live.id
307
+ : this.pendingReservations.pop()
292
308
 
293
309
  if (id == null) {
294
310
  throw new HadEnoughRelaysError('Made reservation on relay but did not need any more discovered relays')
@@ -310,6 +326,12 @@ export class ReservationStore extends TypedEventEmitter<ReservationStoreEvents>
310
326
  }
311
327
  }
312
328
 
329
+ // clear the previous reservation's refresh timer before replacing it,
330
+ // otherwise it stays armed and later fires against the new reservation
331
+ if (existingReservation != null) {
332
+ clearTimeout(existingReservation.timeout)
333
+ }
334
+
313
335
  // we've managed to create a reservation successfully
314
336
  this.reservations.set(peerId, res)
315
337
 
@@ -472,13 +494,9 @@ export class ReservationStore extends TypedEventEmitter<ReservationStoreEvents>
472
494
  )
473
495
  }
474
496
 
475
- // untag the relay
476
- await this.peerStore.merge(peerId, {
477
- tags: {
478
- [KEEP_ALIVE_TAG]: undefined
479
- }
480
- })
481
-
497
+ // withdraw the address and re-check the relay count from the in-memory
498
+ // state updated above, independent of the tag write below, so a datastore
499
+ // failure cannot strand the advertised address or stall rediscovery
482
500
  this.safeDispatchEvent('relay:removed', {
483
501
  detail: {
484
502
  relay: peerId,
@@ -488,6 +506,13 @@ export class ReservationStore extends TypedEventEmitter<ReservationStoreEvents>
488
506
 
489
507
  // maybe trigger discovery of new relays
490
508
  this.#checkReservationCount()
509
+
510
+ // untag the relay so the connection manager may reap the connection
511
+ await this.peerStore.merge(peerId, {
512
+ tags: {
513
+ [KEEP_ALIVE_TAG]: undefined
514
+ }
515
+ })
491
516
  }
492
517
 
493
518
  #checkReservationCount (): void {