@libp2p/circuit-relay-v2 2.1.4 → 2.1.5-3bc9769b8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. package/dist/index.min.js +4 -4
  2. package/dist/src/constants.d.ts +0 -5
  3. package/dist/src/constants.d.ts.map +1 -1
  4. package/dist/src/constants.js +0 -5
  5. package/dist/src/constants.js.map +1 -1
  6. package/dist/src/errors.d.ts +22 -0
  7. package/dist/src/errors.d.ts.map +1 -1
  8. package/dist/src/errors.js +22 -0
  9. package/dist/src/errors.js.map +1 -1
  10. package/dist/src/index.d.ts +16 -1
  11. package/dist/src/index.d.ts.map +1 -1
  12. package/dist/src/index.js.map +1 -1
  13. package/dist/src/pb/index.d.ts +12 -1
  14. package/dist/src/pb/index.d.ts.map +1 -1
  15. package/dist/src/pb/index.js +78 -2
  16. package/dist/src/pb/index.js.map +1 -1
  17. package/dist/src/server/index.d.ts.map +1 -1
  18. package/dist/src/server/index.js +19 -10
  19. package/dist/src/server/index.js.map +1 -1
  20. package/dist/src/server/reservation-store.d.ts +5 -9
  21. package/dist/src/server/reservation-store.d.ts.map +1 -1
  22. package/dist/src/server/reservation-store.js +32 -33
  23. package/dist/src/server/reservation-store.js.map +1 -1
  24. package/dist/src/server/reservation-voucher.d.ts +1 -1
  25. package/dist/src/transport/discovery.d.ts +1 -0
  26. package/dist/src/transport/discovery.d.ts.map +1 -1
  27. package/dist/src/transport/discovery.js +38 -8
  28. package/dist/src/transport/discovery.js.map +1 -1
  29. package/dist/src/transport/index.d.ts +0 -6
  30. package/dist/src/transport/index.d.ts.map +1 -1
  31. package/dist/src/transport/index.js.map +1 -1
  32. package/dist/src/transport/listener.d.ts +3 -0
  33. package/dist/src/transport/listener.d.ts.map +1 -1
  34. package/dist/src/transport/listener.js +57 -27
  35. package/dist/src/transport/listener.js.map +1 -1
  36. package/dist/src/transport/reservation-store.d.ts +37 -14
  37. package/dist/src/transport/reservation-store.d.ts.map +1 -1
  38. package/dist/src/transport/reservation-store.js +144 -74
  39. package/dist/src/transport/reservation-store.js.map +1 -1
  40. package/dist/src/transport/transport.d.ts +2 -13
  41. package/dist/src/transport/transport.d.ts.map +1 -1
  42. package/dist/src/transport/transport.js +30 -54
  43. package/dist/src/transport/transport.js.map +1 -1
  44. package/dist/src/utils.d.ts +10 -1
  45. package/dist/src/utils.d.ts.map +1 -1
  46. package/dist/src/utils.js +22 -8
  47. package/dist/src/utils.js.map +1 -1
  48. package/package.json +14 -12
  49. package/src/constants.ts +0 -7
  50. package/src/errors.ts +25 -0
  51. package/src/index.ts +19 -1
  52. package/src/pb/index.proto +20 -1
  53. package/src/pb/index.ts +99 -3
  54. package/src/server/index.ts +21 -11
  55. package/src/server/reservation-store.ts +38 -42
  56. package/src/server/reservation-voucher.ts +2 -2
  57. package/src/transport/discovery.ts +47 -9
  58. package/src/transport/index.ts +0 -7
  59. package/src/transport/listener.ts +75 -35
  60. package/src/transport/reservation-store.ts +209 -95
  61. package/src/transport/transport.ts +34 -76
  62. package/src/utils.ts +29 -8
  63. package/dist/typedoc-urls.json +0 -23
@@ -2,14 +2,14 @@ import { DialError, InvalidMessageError, serviceCapabilities, serviceDependencie
2
2
  import { peerFilter } from '@libp2p/peer-collections';
3
3
  import { peerIdFromMultihash, peerIdFromString } from '@libp2p/peer-id';
4
4
  import { streamToMaConnection } from '@libp2p/utils/stream-to-ma-conn';
5
- import * as mafmt from '@multiformats/mafmt';
6
5
  import { multiaddr } from '@multiformats/multiaddr';
6
+ import { Circuit } from '@multiformats/multiaddr-matcher';
7
7
  import { pbStream } from 'it-protobuf-stream';
8
8
  import * as Digest from 'multiformats/hashes/digest';
9
9
  import { CustomProgressEvent } from 'progress-events';
10
10
  import { CIRCUIT_PROTO_CODE, DEFAULT_DISCOVERY_FILTER_ERROR_RATE, DEFAULT_DISCOVERY_FILTER_SIZE, MAX_CONNECTIONS, RELAY_V2_HOP_CODEC, RELAY_V2_STOP_CODEC } from '../constants.js';
11
11
  import { StopMessage, HopMessage, Status } from '../pb/index.js';
12
- import { LimitTracker } from '../utils.js';
12
+ import { CircuitListen, CircuitSearch, LimitTracker } from '../utils.js';
13
13
  import { RelayDiscovery } from './discovery.js';
14
14
  import { createListener } from './listener.js';
15
15
  import { ReservationStore } from './reservation-store.js';
@@ -61,26 +61,23 @@ export class CircuitRelayTransport {
61
61
  this.maxInboundStopStreams = init.maxInboundStopStreams ?? defaults.maxInboundStopStreams;
62
62
  this.maxOutboundStopStreams = init.maxOutboundStopStreams ?? defaults.maxOutboundStopStreams;
63
63
  this.stopTimeout = init.stopTimeout ?? defaults.stopTimeout;
64
- const discoverRelays = init.discoverRelays ?? 0;
65
- if (discoverRelays > 0) {
66
- this.discovery = new RelayDiscovery(components, {
67
- filter: init.discoveryFilter ?? peerFilter(DEFAULT_DISCOVERY_FILTER_SIZE, DEFAULT_DISCOVERY_FILTER_ERROR_RATE)
68
- });
69
- this.discovery.addEventListener('relay:discover', (evt) => {
70
- this.reservationStore.addRelay(evt.detail, 'discovered')
71
- .catch(err => {
64
+ this.discovery = new RelayDiscovery(components, {
65
+ filter: init.discoveryFilter ?? peerFilter(DEFAULT_DISCOVERY_FILTER_SIZE, DEFAULT_DISCOVERY_FILTER_ERROR_RATE)
66
+ });
67
+ this.discovery.addEventListener('relay:discover', (evt) => {
68
+ this.reservationStore.addRelay(evt.detail, 'discovered')
69
+ .catch(err => {
70
+ if (err.name !== 'HadEnoughRelaysError' && err.name !== 'RelayQueueFullError') {
72
71
  this.log.error('could not add discovered relay %p', evt.detail, err);
73
- });
72
+ }
74
73
  });
75
- }
74
+ });
76
75
  this.reservationStore = new ReservationStore(components, init);
77
76
  this.reservationStore.addEventListener('relay:not-enough-relays', () => {
78
77
  this.discovery?.startDiscovery();
79
78
  });
80
- this.reservationStore.addEventListener('relay:created-reservation', () => {
81
- if (this.reservationStore.reservationCount() >= discoverRelays) {
82
- this.discovery?.stopDiscovery();
83
- }
79
+ this.reservationStore.addEventListener('relay:found-enough-relays', () => {
80
+ this.discovery?.stopDiscovery();
84
81
  });
85
82
  this.started = false;
86
83
  }
@@ -137,13 +134,12 @@ export class CircuitRelayTransport {
137
134
  const relayId = relayAddr.getPeerId();
138
135
  const destinationId = destinationAddr.getPeerId();
139
136
  if (relayId == null || destinationId == null) {
140
- const errMsg = `Circuit relay dial to ${ma.toString()} failed as address did not have peer ids`;
141
- this.log.error(errMsg);
142
- throw new DialError(errMsg);
137
+ const errMsg = `ircuit relay dial to ${ma.toString()} failed as address did not have both relay and destination PeerIDs`;
138
+ this.log.error(`c${errMsg}`);
139
+ throw new DialError(`C${errMsg}`);
143
140
  }
144
141
  const relayPeer = peerIdFromString(relayId);
145
142
  const destinationPeer = peerIdFromString(destinationId);
146
- let disconnectOnFailure = false;
147
143
  const relayConnections = this.connectionManager.getConnections(relayPeer);
148
144
  let relayConnection = relayConnections[0];
149
145
  if (relayConnection == null) {
@@ -152,7 +148,6 @@ export class CircuitRelayTransport {
152
148
  });
153
149
  options.onProgress?.(new CustomProgressEvent('circuit-relay:open-connection'));
154
150
  relayConnection = await this.connectionManager.openConnection(relayPeer, options);
155
- disconnectOnFailure = true;
156
151
  }
157
152
  else {
158
153
  options.onProgress?.(new CustomProgressEvent('circuit-relay:reuse-connection'));
@@ -160,41 +155,19 @@ export class CircuitRelayTransport {
160
155
  let stream;
161
156
  try {
162
157
  options.onProgress?.(new CustomProgressEvent('circuit-relay:open-hop-stream'));
163
- stream = await relayConnection.newStream(RELAY_V2_HOP_CODEC);
164
- return await this.connectV2({
165
- stream,
166
- connection: relayConnection,
167
- destinationPeer,
168
- destinationAddr,
169
- relayAddr,
170
- ma,
171
- disconnectOnFailure,
172
- onProgress: options.onProgress
173
- });
174
- }
175
- catch (err) {
176
- this.log.error('circuit relay dial to destination %p via relay %p failed', destinationPeer, relayPeer, err);
177
- if (stream != null) {
178
- stream.abort(err);
179
- }
180
- disconnectOnFailure && await relayConnection.close();
181
- throw err;
182
- }
183
- }
184
- async connectV2({ stream, connection, destinationPeer, destinationAddr, relayAddr, ma, disconnectOnFailure, onProgress }) {
185
- try {
158
+ stream = await relayConnection.newStream(RELAY_V2_HOP_CODEC, options);
186
159
  const pbstr = pbStream(stream);
187
160
  const hopstr = pbstr.pb(HopMessage);
188
- onProgress?.(new CustomProgressEvent('circuit-relay:write-connect-message'));
161
+ options.onProgress?.(new CustomProgressEvent('circuit-relay:write-connect-message'));
189
162
  await hopstr.write({
190
163
  type: HopMessage.Type.CONNECT,
191
164
  peer: {
192
165
  id: destinationPeer.toMultihash().bytes,
193
166
  addrs: [multiaddr(destinationAddr).bytes]
194
167
  }
195
- });
196
- onProgress?.(new CustomProgressEvent('circuit-relay:read-connect-response'));
197
- const status = await hopstr.read();
168
+ }, options);
169
+ options.onProgress?.(new CustomProgressEvent('circuit-relay:read-connect-response'));
170
+ const status = await hopstr.read(options);
198
171
  if (status.status !== Status.OK) {
199
172
  throw new InvalidMessageError(`failed to connect via relay with status ${status?.status?.toString() ?? 'undefined'}`);
200
173
  }
@@ -209,13 +182,13 @@ export class CircuitRelayTransport {
209
182
  });
210
183
  this.log('new outbound relayed connection %a', maConn.remoteAddr);
211
184
  return await this.upgrader.upgradeOutbound(maConn, {
212
- limits: limits.getLimits(),
213
- onProgress
185
+ ...options,
186
+ limits: limits.getLimits()
214
187
  });
215
188
  }
216
189
  catch (err) {
217
- this.log.error(`Circuit relay dial to destination ${destinationPeer.toString()} via relay ${connection.remotePeer.toString()} failed`, err);
218
- disconnectOnFailure && await connection.close();
190
+ this.log.error('circuit relay dial to destination %p via relay %p failed', destinationPeer, relayPeer, err);
191
+ stream?.abort(err);
219
192
  throw err;
220
193
  }
221
194
  }
@@ -235,14 +208,17 @@ export class CircuitRelayTransport {
235
208
  listenFilter(multiaddrs) {
236
209
  multiaddrs = Array.isArray(multiaddrs) ? multiaddrs : [multiaddrs];
237
210
  return multiaddrs.filter((ma) => {
238
- return mafmt.Circuit.matches(ma);
211
+ return CircuitListen.exactMatch(ma) || CircuitSearch.exactMatch(ma);
239
212
  });
240
213
  }
241
214
  /**
242
215
  * Filter check for all Multiaddrs that this transport can dial
243
216
  */
244
217
  dialFilter(multiaddrs) {
245
- return this.listenFilter(multiaddrs);
218
+ multiaddrs = Array.isArray(multiaddrs) ? multiaddrs : [multiaddrs];
219
+ return multiaddrs.filter((ma) => {
220
+ return Circuit.exactMatch(ma);
221
+ });
246
222
  }
247
223
  /**
248
224
  * An incoming STOP request means a remote peer wants to dial us via a relay
@@ -1 +1 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/transport/transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/transport/transport.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import { CID } from 'multiformats/cid';
2
+ import type { RelayReservation } from './index.js';
2
3
  import type { Limit } from './pb/index.js';
3
4
  import type { ConnectionLimits, LoggerOptions, Stream } from '@libp2p/interface';
4
5
  import type { Uint8ArrayList } from 'uint8arraylist';
5
- export declare function createLimitedRelay(src: Stream, dst: Stream, abortSignal: AbortSignal, limit: Limit | undefined, options: LoggerOptions): void;
6
+ export declare function createLimitedRelay(src: Stream, dst: Stream, abortSignal: AbortSignal, reservation: RelayReservation, options: LoggerOptions): void;
6
7
  /**
7
8
  * Convert a namespace string into a cid
8
9
  */
@@ -18,4 +19,12 @@ export declare class LimitTracker {
18
19
  onData(buf: Uint8ArrayList | Uint8Array): void;
19
20
  getLimits(): ConnectionLimits | undefined;
20
21
  }
22
+ /**
23
+ * A custom matcher that tells us to listen on a particular relay
24
+ */
25
+ export declare const CircuitListen: import("@multiformats/multiaddr-matcher").MultiaddrMatcher;
26
+ /**
27
+ * A custom matcher that tells us to discover available relays
28
+ */
29
+ export declare const CircuitSearch: import("@multiformats/multiaddr-matcher").MultiaddrMatcher;
21
30
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAGtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAEhF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AA6BpD,wBAAgB,kBAAkB,CAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAoE9I;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAKrE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAM5E;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAQ;IACjC,OAAO,CAAC,KAAK,CAAC,CAAQ;gBAET,MAAM,CAAC,EAAE,KAAK;IAc3B,MAAM,CAAE,GAAG,EAAE,cAAc,GAAG,UAAU,GAAG,IAAI;IAY/C,SAAS,IAAK,gBAAgB,GAAG,SAAS;CA6B3C"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAGtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAEhF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AA6BpD,wBAAgB,kBAAkB,CAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAwEnJ;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAKrE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAM5E;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAQ;IACjC,OAAO,CAAC,KAAK,CAAC,CAAQ;gBAET,MAAM,CAAC,EAAE,KAAK;IAc3B,MAAM,CAAE,GAAG,EAAE,cAAc,GAAG,UAAU,GAAG,IAAI;IAY/C,SAAS,IAAK,gBAAgB,GAAG,SAAS;CA6B3C;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,4DAEzB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,4DAEzB,CAAA"}
package/dist/src/utils.js CHANGED
@@ -1,3 +1,5 @@
1
+ import { P2P } from '@multiformats/multiaddr-matcher';
2
+ import { fmt, literal, and } from '@multiformats/multiaddr-matcher/utils';
1
3
  import { anySignal } from 'any-signal';
2
4
  import { CID } from 'multiformats/cid';
3
5
  import { sha256 } from 'multiformats/hashes/sha2';
@@ -24,27 +26,30 @@ async function* countStreamBytes(source, limit, options) {
24
26
  yield buf;
25
27
  }
26
28
  }
27
- export function createLimitedRelay(src, dst, abortSignal, limit, options) {
29
+ export function createLimitedRelay(src, dst, abortSignal, reservation, options) {
28
30
  function abortStreams(err) {
29
31
  src.abort(err);
30
32
  dst.abort(err);
31
33
  }
32
- const signals = [abortSignal];
33
- if (limit?.duration != null) {
34
- signals.push(AbortSignal.timeout(limit.duration));
34
+ // combine shutdown signal and reservation expiry signal
35
+ const signals = [abortSignal, reservation.signal];
36
+ if (reservation.limit?.duration != null) {
37
+ options.log('limiting relayed connection duration to %dms', reservation.limit.duration);
38
+ signals.push(AbortSignal.timeout(reservation.limit.duration));
35
39
  }
36
40
  const signal = anySignal(signals);
37
41
  let srcDstFinished = false;
38
42
  let dstSrcFinished = false;
39
43
  let dataLimit;
40
- if (limit?.data != null) {
44
+ if (reservation.limit?.data != null) {
41
45
  dataLimit = {
42
- remaining: limit.data
46
+ remaining: reservation.limit.data
43
47
  };
44
48
  }
45
49
  queueMicrotask(() => {
46
50
  const onAbort = () => {
47
- dst.abort(new DurationLimitError(`duration limit of ${limit?.duration} ms exceeded`));
51
+ options.log('relayed connection reached time limit');
52
+ dst.abort(new DurationLimitError(`duration limit of ${reservation.limit?.duration} ms exceeded`));
48
53
  };
49
54
  signal.addEventListener('abort', onAbort, { once: true });
50
55
  void dst.sink(dataLimit == null ? src.source : countStreamBytes(src.source, dataLimit, options))
@@ -62,7 +67,8 @@ export function createLimitedRelay(src, dst, abortSignal, limit, options) {
62
67
  });
63
68
  queueMicrotask(() => {
64
69
  const onAbort = () => {
65
- src.abort(new DurationLimitError(`duration limit of ${limit?.duration} ms exceeded`));
70
+ options.log('relayed connection reached time limit');
71
+ src.abort(new DurationLimitError(`duration limit of ${reservation.limit?.duration} ms exceeded`));
66
72
  };
67
73
  signal.addEventListener('abort', onAbort, { once: true });
68
74
  void src.sink(dataLimit == null ? dst.source : countStreamBytes(dst.source, dataLimit, options))
@@ -142,4 +148,12 @@ export class LimitTracker {
142
148
  return output;
143
149
  }
144
150
  }
151
+ /**
152
+ * A custom matcher that tells us to listen on a particular relay
153
+ */
154
+ export const CircuitListen = fmt(and(P2P.matchers[0], literal('p2p-circuit')));
155
+ /**
156
+ * A custom matcher that tells us to discover available relays
157
+ */
158
+ export const CircuitSearch = fmt(literal('p2p-circuit'));
145
159
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/circuit-relay-v2",
3
- "version": "2.1.4",
3
+ "version": "2.1.5-3bc9769b8",
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",
@@ -52,28 +52,29 @@
52
52
  "doc-check": "aegir doc-check"
53
53
  },
54
54
  "dependencies": {
55
- "@libp2p/interface": "^2.1.3",
56
- "@libp2p/interface-internal": "^2.0.8",
57
- "@libp2p/peer-collections": "^6.0.8",
58
- "@libp2p/peer-id": "^5.0.5",
59
- "@libp2p/peer-record": "^8.0.8",
60
- "@libp2p/utils": "^6.1.1",
61
- "@multiformats/mafmt": "^12.1.6",
55
+ "@libp2p/crypto": "5.0.5-3bc9769b8",
56
+ "@libp2p/interface": "2.1.3-3bc9769b8",
57
+ "@libp2p/interface-internal": "2.0.8-3bc9769b8",
58
+ "@libp2p/peer-collections": "6.0.8-3bc9769b8",
59
+ "@libp2p/peer-id": "5.0.5-3bc9769b8",
60
+ "@libp2p/peer-record": "8.0.8-3bc9769b8",
61
+ "@libp2p/utils": "6.1.1-3bc9769b8",
62
62
  "@multiformats/multiaddr": "^12.2.3",
63
+ "@multiformats/multiaddr-matcher": "^1.3.0",
63
64
  "any-signal": "^4.1.1",
64
65
  "it-protobuf-stream": "^1.1.3",
65
66
  "it-stream-types": "^2.0.1",
66
67
  "multiformats": "^13.1.0",
68
+ "nanoid": "^5.0.7",
67
69
  "progress-events": "^1.0.0",
68
70
  "protons-runtime": "^5.4.0",
69
- "race-signal": "^1.0.2",
71
+ "retimeable-signal": "^0.0.0",
70
72
  "uint8arraylist": "^2.4.8",
71
73
  "uint8arrays": "^5.1.0"
72
74
  },
73
75
  "devDependencies": {
74
- "@libp2p/crypto": "^5.0.5",
75
- "@libp2p/interface-compliance-tests": "^6.1.6",
76
- "@libp2p/logger": "^5.1.1",
76
+ "@libp2p/interface-compliance-tests": "6.1.6-3bc9769b8",
77
+ "@libp2p/logger": "5.1.1-3bc9769b8",
77
78
  "aegir": "^44.0.1",
78
79
  "delay": "^6.0.0",
79
80
  "it-drain": "^3.0.7",
@@ -82,6 +83,7 @@
82
83
  "it-to-buffer": "^4.0.7",
83
84
  "p-wait-for": "^5.0.2",
84
85
  "protons": "^7.5.0",
86
+ "race-signal": "^1.0.2",
85
87
  "sinon": "^18.0.0",
86
88
  "sinon-ts": "^2.0.0"
87
89
  },
package/src/constants.ts CHANGED
@@ -13,11 +13,6 @@ export const CIRCUIT_PROTO_CODE = 290
13
13
  */
14
14
  export const DEFAULT_MAX_RESERVATION_STORE_SIZE = 15
15
15
 
16
- /**
17
- * How often to check for reservation expiry
18
- */
19
- export const DEFAULT_MAX_RESERVATION_CLEAR_INTERVAL = 300 * second
20
-
21
16
  /**
22
17
  * How often to check for reservation expiry
23
18
  */
@@ -40,8 +35,6 @@ export const DEFAULT_MAX_RESERVATION_QUEUE_LENGTH = 100
40
35
 
41
36
  export const RELAY_SOURCE_TAG = 'circuit-relay-source'
42
37
 
43
- export const RELAY_TAG = 'circuit-relay-relay'
44
-
45
38
  export const KEEP_ALIVE_TAG = `${KEEP_ALIVE}-circuit-relay`
46
39
  export const KEEP_ALIVE_SOURCE_TAG = `${KEEP_ALIVE}-circuit-relay-source`
47
40
 
package/src/errors.ts CHANGED
@@ -17,3 +17,28 @@ export class DurationLimitError extends Error {
17
17
  this.name = 'DurationLimitError'
18
18
  }
19
19
  }
20
+
21
+ /**
22
+ * There were enough relay reservations already
23
+ */
24
+ export class HadEnoughRelaysError extends Error {
25
+ static name: string = 'HadEnoughRelaysError'
26
+ name: string = 'HadEnoughRelaysError'
27
+ }
28
+
29
+ /**
30
+ * An attempt to open a relayed connection over a relayed connection was made
31
+ */
32
+ export class DoubleRelayError extends Error {
33
+ static name: string = 'DoubleRelayError'
34
+ name: string = 'DoubleRelayError'
35
+ }
36
+
37
+ /**
38
+ * An attempt to make a reservation on a relay was made while the reservation
39
+ * queue was full
40
+ */
41
+ export class RelayQueueFullError extends Error {
42
+ static name: string = 'RelayQueueFullError'
43
+ name: string = 'RelayQueueFullError'
44
+ }
package/src/index.ts CHANGED
@@ -43,13 +43,31 @@ import type { Limit } from './pb/index.js'
43
43
  import type { TypedEventEmitter } from '@libp2p/interface'
44
44
  import type { PeerMap } from '@libp2p/peer-collections'
45
45
  import type { Multiaddr } from '@multiformats/multiaddr'
46
+ import type { RetimeableAbortSignal } from 'retimeable-signal'
46
47
 
47
48
  export type { Limit }
48
49
 
49
50
  export interface RelayReservation {
50
- expire: Date
51
+ /**
52
+ * When this reservation expires
53
+ */
54
+ expiry: Date
55
+
56
+ /**
57
+ * The address of the relay client
58
+ */
51
59
  addr: Multiaddr
60
+
61
+ /**
62
+ * How much data can be transferred over each relayed connection and for how
63
+ * long before the underlying stream is reset
64
+ */
52
65
  limit?: Limit
66
+
67
+ /**
68
+ * This signal will fire it's "abort" event when the reservation expires
69
+ */
70
+ signal: RetimeableAbortSignal
53
71
  }
54
72
 
55
73
  export interface CircuitRelayServiceEvents {
@@ -40,7 +40,7 @@ message Peer {
40
40
  message Reservation {
41
41
  uint64 expire = 1; // Unix expiration time (UTC)
42
42
  repeated bytes addrs = 2; // relay addrs for reserving peer
43
- optional bytes voucher = 3; // reservation voucher
43
+ optional Envelope voucher = 3; // reservation voucher
44
44
  }
45
45
 
46
46
  message Limit {
@@ -65,3 +65,22 @@ message ReservationVoucher {
65
65
  bytes peer = 2;
66
66
  uint64 expiration = 3;
67
67
  }
68
+
69
+ // https://github.com/libp2p/specs/blob/master/RFC/0002-signed-envelopes.md
70
+ message Envelope {
71
+ // public_key is the public key of the keypair the enclosed payload was
72
+ // signed with.
73
+ bytes public_key = 1;
74
+
75
+ // payload_type encodes the type of payload, so that it can be deserialized
76
+ // deterministically.
77
+ bytes payload_type = 2;
78
+
79
+ // payload is the actual payload carried inside this envelope.
80
+ ReservationVoucher payload = 3;
81
+
82
+ // signature is the signature produced by the private key corresponding to
83
+ // the enclosed public key, over the payload, prefixing a domain string for
84
+ // additional security.
85
+ bytes signature = 5;
86
+ }
package/src/pb/index.ts CHANGED
@@ -318,7 +318,7 @@ export namespace Peer {
318
318
  export interface Reservation {
319
319
  expire: bigint
320
320
  addrs: Uint8Array[]
321
- voucher?: Uint8Array
321
+ voucher?: Envelope
322
322
  }
323
323
 
324
324
  export namespace Reservation {
@@ -345,7 +345,7 @@ export namespace Reservation {
345
345
 
346
346
  if (obj.voucher != null) {
347
347
  w.uint32(26)
348
- w.bytes(obj.voucher)
348
+ Envelope.codec().encode(obj.voucher, w)
349
349
  }
350
350
 
351
351
  if (opts.lengthDelimited !== false) {
@@ -376,7 +376,9 @@ export namespace Reservation {
376
376
  break
377
377
  }
378
378
  case 3: {
379
- obj.voucher = reader.bytes()
379
+ obj.voucher = Envelope.codec().decode(reader, reader.uint32(), {
380
+ limits: opts.limits?.voucher
381
+ })
380
382
  break
381
383
  }
382
384
  default: {
@@ -580,3 +582,97 @@ export namespace ReservationVoucher {
580
582
  return decodeMessage(buf, ReservationVoucher.codec(), opts)
581
583
  }
582
584
  }
585
+
586
+ export interface Envelope {
587
+ publicKey: Uint8Array
588
+ payloadType: Uint8Array
589
+ payload?: ReservationVoucher
590
+ signature: Uint8Array
591
+ }
592
+
593
+ export namespace Envelope {
594
+ let _codec: Codec<Envelope>
595
+
596
+ export const codec = (): Codec<Envelope> => {
597
+ if (_codec == null) {
598
+ _codec = message<Envelope>((obj, w, opts = {}) => {
599
+ if (opts.lengthDelimited !== false) {
600
+ w.fork()
601
+ }
602
+
603
+ if ((obj.publicKey != null && obj.publicKey.byteLength > 0)) {
604
+ w.uint32(10)
605
+ w.bytes(obj.publicKey)
606
+ }
607
+
608
+ if ((obj.payloadType != null && obj.payloadType.byteLength > 0)) {
609
+ w.uint32(18)
610
+ w.bytes(obj.payloadType)
611
+ }
612
+
613
+ if (obj.payload != null) {
614
+ w.uint32(26)
615
+ ReservationVoucher.codec().encode(obj.payload, w)
616
+ }
617
+
618
+ if ((obj.signature != null && obj.signature.byteLength > 0)) {
619
+ w.uint32(42)
620
+ w.bytes(obj.signature)
621
+ }
622
+
623
+ if (opts.lengthDelimited !== false) {
624
+ w.ldelim()
625
+ }
626
+ }, (reader, length, opts = {}) => {
627
+ const obj: any = {
628
+ publicKey: uint8ArrayAlloc(0),
629
+ payloadType: uint8ArrayAlloc(0),
630
+ signature: uint8ArrayAlloc(0)
631
+ }
632
+
633
+ const end = length == null ? reader.len : reader.pos + length
634
+
635
+ while (reader.pos < end) {
636
+ const tag = reader.uint32()
637
+
638
+ switch (tag >>> 3) {
639
+ case 1: {
640
+ obj.publicKey = reader.bytes()
641
+ break
642
+ }
643
+ case 2: {
644
+ obj.payloadType = reader.bytes()
645
+ break
646
+ }
647
+ case 3: {
648
+ obj.payload = ReservationVoucher.codec().decode(reader, reader.uint32(), {
649
+ limits: opts.limits?.payload
650
+ })
651
+ break
652
+ }
653
+ case 5: {
654
+ obj.signature = reader.bytes()
655
+ break
656
+ }
657
+ default: {
658
+ reader.skipType(tag & 7)
659
+ break
660
+ }
661
+ }
662
+ }
663
+
664
+ return obj
665
+ })
666
+ }
667
+
668
+ return _codec
669
+ }
670
+
671
+ export const encode = (obj: Partial<Envelope>): Uint8Array => {
672
+ return encodeMessage(obj, Envelope.codec())
673
+ }
674
+
675
+ export const decode = (buf: Uint8Array | Uint8ArrayList, opts?: DecodeOptions<Envelope>): Envelope => {
676
+ return decodeMessage(buf, Envelope.codec(), opts)
677
+ }
678
+ }