libp2p 0.37.3-b1b2b21 → 0.37.3-ba56c64
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.
- package/dist/src/circuit/circuit/hop.d.ts +3 -2
- package/dist/src/circuit/circuit/hop.d.ts.map +1 -1
- package/dist/src/circuit/circuit/hop.js +8 -4
- package/dist/src/circuit/circuit/hop.js.map +1 -1
- package/dist/src/circuit/circuit/stop.d.ts +2 -1
- package/dist/src/circuit/circuit/stop.d.ts.map +1 -1
- package/dist/src/circuit/circuit/stop.js +4 -2
- package/dist/src/circuit/circuit/stop.js.map +1 -1
- package/dist/src/circuit/index.d.ts +2 -10
- package/dist/src/circuit/index.d.ts.map +1 -1
- package/dist/src/circuit/index.js.map +1 -1
- package/dist/src/circuit/transport.d.ts +3 -0
- package/dist/src/circuit/transport.d.ts.map +1 -1
- package/dist/src/circuit/transport.js +73 -57
- package/dist/src/circuit/transport.js.map +1 -1
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +19 -4
- package/dist/src/config.js.map +1 -1
- package/dist/src/connection-manager/dialer/index.d.ts +4 -4
- package/dist/src/connection-manager/dialer/index.d.ts.map +1 -1
- package/dist/src/connection-manager/dialer/index.js +10 -10
- package/dist/src/connection-manager/dialer/index.js.map +1 -1
- package/dist/src/connection-manager/index.d.ts +15 -1
- package/dist/src/connection-manager/index.d.ts.map +1 -1
- package/dist/src/connection-manager/index.js +135 -23
- package/dist/src/connection-manager/index.js.map +1 -1
- package/dist/src/constants.d.ts +4 -0
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +4 -0
- package/dist/src/constants.js.map +1 -1
- package/dist/src/fetch/index.d.ts +4 -0
- package/dist/src/fetch/index.d.ts.map +1 -1
- package/dist/src/fetch/index.js +19 -6
- package/dist/src/fetch/index.js.map +1 -1
- package/dist/src/identify/index.d.ts +1 -1
- package/dist/src/identify/index.d.ts.map +1 -1
- package/dist/src/identify/index.js +13 -11
- package/dist/src/identify/index.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/libp2p.d.ts.map +1 -1
- package/dist/src/libp2p.js +3 -13
- package/dist/src/libp2p.js.map +1 -1
- package/dist/src/metrics/index.d.ts +2 -2
- package/dist/src/metrics/index.d.ts.map +1 -1
- package/dist/src/metrics/index.js +6 -2
- package/dist/src/metrics/index.js.map +1 -1
- package/dist/src/ping/index.d.ts +4 -0
- package/dist/src/ping/index.d.ts.map +1 -1
- package/dist/src/ping/index.js +20 -7
- package/dist/src/ping/index.js.map +1 -1
- package/dist/src/upgrader.d.ts +6 -0
- package/dist/src/upgrader.d.ts.map +1 -1
- package/dist/src/upgrader.js +83 -59
- package/dist/src/upgrader.js.map +1 -1
- package/dist/src/version.d.ts.map +1 -1
- package/dist/src/version.js.map +1 -1
- package/package.json +13 -12
- package/src/circuit/circuit/hop.ts +13 -6
- package/src/circuit/circuit/stop.ts +7 -3
- package/src/circuit/index.ts +2 -11
- package/src/circuit/transport.ts +79 -58
- package/src/config.ts +19 -4
- package/src/connection-manager/dialer/index.ts +10 -10
- package/src/connection-manager/index.ts +178 -26
- package/src/constants.ts +5 -0
- package/src/fetch/index.ts +28 -8
- package/src/identify/index.ts +16 -14
- package/src/index.ts +1 -0
- package/src/libp2p.ts +3 -14
- package/src/metrics/index.ts +8 -4
- package/src/ping/index.ts +30 -10
- package/src/upgrader.ts +95 -61
- package/src/version.ts +1 -2
package/dist/src/upgrader.js
CHANGED
|
@@ -10,6 +10,8 @@ import { CustomEvent, EventEmitter } from '@libp2p/interfaces/events';
|
|
|
10
10
|
import { peerIdFromString } from '@libp2p/peer-id';
|
|
11
11
|
import { isInitializable } from '@libp2p/components';
|
|
12
12
|
import { DEFAULT_MAX_INBOUND_STREAMS, DEFAULT_MAX_OUTBOUND_STREAMS } from './registrar.js';
|
|
13
|
+
import { TimeoutController } from 'timeout-abort-controller';
|
|
14
|
+
import { abortableDuplex } from 'abortable-iterator';
|
|
13
15
|
const log = logger('libp2p:upgrader');
|
|
14
16
|
function findIncomingStreamLimit(protocol, registrar) {
|
|
15
17
|
try {
|
|
@@ -56,6 +58,7 @@ export class DefaultUpgrader extends EventEmitter {
|
|
|
56
58
|
init.muxers.forEach(muxer => {
|
|
57
59
|
this.muxers.set(muxer.protocol, muxer);
|
|
58
60
|
});
|
|
61
|
+
this.inboundUpgradeTimeout = init.inboundUpgradeTimeout;
|
|
59
62
|
}
|
|
60
63
|
/**
|
|
61
64
|
* Upgrades an inbound connection
|
|
@@ -69,73 +72,82 @@ export class DefaultUpgrader extends EventEmitter {
|
|
|
69
72
|
let setPeer;
|
|
70
73
|
let proxyPeer;
|
|
71
74
|
const metrics = this.components.getMetrics();
|
|
72
|
-
|
|
73
|
-
throw errCode(new Error('The multiaddr connection is blocked by gater.acceptConnection'), codes.ERR_CONNECTION_INTERCEPTED);
|
|
74
|
-
}
|
|
75
|
-
if (metrics != null) {
|
|
76
|
-
({ setTarget: setPeer, proxy: proxyPeer } = mutableProxy());
|
|
77
|
-
const idString = `${(Math.random() * 1e9).toString(36)}${Date.now()}`;
|
|
78
|
-
setPeer({ toString: () => idString });
|
|
79
|
-
maConn = metrics.trackStream({ stream: maConn, remotePeer: proxyPeer });
|
|
80
|
-
}
|
|
81
|
-
log('starting the inbound connection upgrade');
|
|
82
|
-
// Protect
|
|
83
|
-
let protectedConn = maConn;
|
|
84
|
-
const protector = this.components.getConnectionProtector();
|
|
85
|
-
if (protector != null) {
|
|
86
|
-
log('protecting the inbound connection');
|
|
87
|
-
protectedConn = await protector.protect(maConn);
|
|
88
|
-
}
|
|
75
|
+
const timeoutController = new TimeoutController(this.inboundUpgradeTimeout);
|
|
89
76
|
try {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
96
|
-
if (
|
|
77
|
+
const abortableStream = abortableDuplex(maConn, timeoutController.signal);
|
|
78
|
+
maConn.source = abortableStream.source;
|
|
79
|
+
maConn.sink = abortableStream.sink;
|
|
80
|
+
if (await this.components.getConnectionGater().denyInboundConnection(maConn)) {
|
|
81
|
+
throw errCode(new Error('The multiaddr connection is blocked by gater.acceptConnection'), codes.ERR_CONNECTION_INTERCEPTED);
|
|
82
|
+
}
|
|
83
|
+
if (metrics != null) {
|
|
84
|
+
({ setTarget: setPeer, proxy: proxyPeer } = mutableProxy());
|
|
85
|
+
const idString = `${(Math.random() * 1e9).toString(36)}${Date.now()}`;
|
|
86
|
+
setPeer({ toString: () => idString });
|
|
87
|
+
maConn = metrics.trackStream({ stream: maConn, remotePeer: proxyPeer });
|
|
88
|
+
}
|
|
89
|
+
log('starting the inbound connection upgrade');
|
|
90
|
+
// Protect
|
|
91
|
+
let protectedConn = maConn;
|
|
92
|
+
const protector = this.components.getConnectionProtector();
|
|
93
|
+
if (protector != null) {
|
|
94
|
+
log('protecting the inbound connection');
|
|
95
|
+
protectedConn = await protector.protect(maConn);
|
|
96
|
+
}
|
|
97
|
+
try {
|
|
98
|
+
// Encrypt the connection
|
|
99
|
+
({
|
|
100
|
+
conn: encryptedConn,
|
|
101
|
+
remotePeer,
|
|
102
|
+
protocol: cryptoProtocol
|
|
103
|
+
} = await this._encryptInbound(protectedConn));
|
|
104
|
+
if (await this.components.getConnectionGater().denyInboundEncryptedConnection(remotePeer, {
|
|
105
|
+
...protectedConn,
|
|
106
|
+
...encryptedConn
|
|
107
|
+
})) {
|
|
108
|
+
throw errCode(new Error('The multiaddr connection is blocked by gater.acceptEncryptedConnection'), codes.ERR_CONNECTION_INTERCEPTED);
|
|
109
|
+
}
|
|
110
|
+
// Multiplex the connection
|
|
111
|
+
if (this.muxers.size > 0) {
|
|
112
|
+
const multiplexed = await this._multiplexInbound({
|
|
113
|
+
...protectedConn,
|
|
114
|
+
...encryptedConn
|
|
115
|
+
}, this.muxers);
|
|
116
|
+
muxerFactory = multiplexed.muxerFactory;
|
|
117
|
+
upgradedConn = multiplexed.stream;
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
upgradedConn = encryptedConn;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
log.error('Failed to upgrade inbound connection', err);
|
|
125
|
+
await maConn.close(err);
|
|
126
|
+
throw err;
|
|
127
|
+
}
|
|
128
|
+
if (await this.components.getConnectionGater().denyInboundUpgradedConnection(remotePeer, {
|
|
97
129
|
...protectedConn,
|
|
98
130
|
...encryptedConn
|
|
99
131
|
})) {
|
|
100
132
|
throw errCode(new Error('The multiaddr connection is blocked by gater.acceptEncryptedConnection'), codes.ERR_CONNECTION_INTERCEPTED);
|
|
101
133
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
...protectedConn,
|
|
106
|
-
...encryptedConn
|
|
107
|
-
}, this.muxers);
|
|
108
|
-
muxerFactory = multiplexed.muxerFactory;
|
|
109
|
-
upgradedConn = multiplexed.stream;
|
|
110
|
-
}
|
|
111
|
-
else {
|
|
112
|
-
upgradedConn = encryptedConn;
|
|
134
|
+
if (metrics != null) {
|
|
135
|
+
metrics.updatePlaceholder(proxyPeer, remotePeer);
|
|
136
|
+
setPeer(remotePeer);
|
|
113
137
|
}
|
|
138
|
+
log('Successfully upgraded inbound connection');
|
|
139
|
+
return this._createConnection({
|
|
140
|
+
cryptoProtocol,
|
|
141
|
+
direction: 'inbound',
|
|
142
|
+
maConn,
|
|
143
|
+
upgradedConn,
|
|
144
|
+
muxerFactory,
|
|
145
|
+
remotePeer
|
|
146
|
+
});
|
|
114
147
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
await maConn.close(err);
|
|
118
|
-
throw err;
|
|
119
|
-
}
|
|
120
|
-
if (await this.components.getConnectionGater().denyInboundUpgradedConnection(remotePeer, {
|
|
121
|
-
...protectedConn,
|
|
122
|
-
...encryptedConn
|
|
123
|
-
})) {
|
|
124
|
-
throw errCode(new Error('The multiaddr connection is blocked by gater.acceptEncryptedConnection'), codes.ERR_CONNECTION_INTERCEPTED);
|
|
125
|
-
}
|
|
126
|
-
if (metrics != null) {
|
|
127
|
-
metrics.updatePlaceholder(proxyPeer, remotePeer);
|
|
128
|
-
setPeer(remotePeer);
|
|
148
|
+
finally {
|
|
149
|
+
timeoutController.clear();
|
|
129
150
|
}
|
|
130
|
-
log('Successfully upgraded inbound connection');
|
|
131
|
-
return this._createConnection({
|
|
132
|
-
cryptoProtocol,
|
|
133
|
-
direction: 'inbound',
|
|
134
|
-
maConn,
|
|
135
|
-
upgradedConn,
|
|
136
|
-
muxerFactory,
|
|
137
|
-
remotePeer
|
|
138
|
-
});
|
|
139
151
|
}
|
|
140
152
|
/**
|
|
141
153
|
* Upgrades an outbound connection
|
|
@@ -232,6 +244,7 @@ export class DefaultUpgrader extends EventEmitter {
|
|
|
232
244
|
if (muxerFactory != null) {
|
|
233
245
|
// Create the muxer
|
|
234
246
|
muxer = muxerFactory.createStreamMuxer({
|
|
247
|
+
direction,
|
|
235
248
|
// Run anytime a remote stream is created
|
|
236
249
|
onIncomingStream: muxedStream => {
|
|
237
250
|
if (connection == null) {
|
|
@@ -282,7 +295,13 @@ export class DefaultUpgrader extends EventEmitter {
|
|
|
282
295
|
const muxedStream = muxer.newStream();
|
|
283
296
|
const mss = new Dialer(muxedStream);
|
|
284
297
|
const metrics = this.components.getMetrics();
|
|
298
|
+
let controller;
|
|
285
299
|
try {
|
|
300
|
+
if (options.signal == null) {
|
|
301
|
+
log('No abort signal was passed while trying to negotiate protocols %s falling back to default timeout', protocols);
|
|
302
|
+
controller = new TimeoutController(30000);
|
|
303
|
+
options.signal = controller.signal;
|
|
304
|
+
}
|
|
286
305
|
let { stream, protocol } = await mss.select(protocols, options);
|
|
287
306
|
if (metrics != null) {
|
|
288
307
|
stream = metrics.trackStream({ stream, remotePeer, protocol });
|
|
@@ -312,6 +331,11 @@ export class DefaultUpgrader extends EventEmitter {
|
|
|
312
331
|
}
|
|
313
332
|
throw errCode(err, codes.ERR_UNSUPPORTED_PROTOCOL);
|
|
314
333
|
}
|
|
334
|
+
finally {
|
|
335
|
+
if (controller != null) {
|
|
336
|
+
controller.clear();
|
|
337
|
+
}
|
|
338
|
+
}
|
|
315
339
|
};
|
|
316
340
|
// Pipe all data through the muxer
|
|
317
341
|
pipe(upgradedConn, muxer, upgradedConn).catch(log.error);
|
|
@@ -363,7 +387,7 @@ export class DefaultUpgrader extends EventEmitter {
|
|
|
363
387
|
await maConn.close();
|
|
364
388
|
// Ensure remaining streams are closed
|
|
365
389
|
if (muxer != null) {
|
|
366
|
-
muxer.
|
|
390
|
+
muxer.close();
|
|
367
391
|
}
|
|
368
392
|
}
|
|
369
393
|
});
|
package/dist/src/upgrader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrader.js","sourceRoot":"","sources":["../../src/upgrader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"upgrader.js","sourceRoot":"","sources":["../../src/upgrader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAA;AAC9B,eAAO,MAAM,IAAI,WAAW,CAAA"}
|
package/dist/src/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAA;AAC9B,MAAM,CAAC,MAAM,IAAI,GAAG,QAAQ,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "libp2p",
|
|
3
|
-
"version": "0.37.3-
|
|
3
|
+
"version": "0.37.3-ba56c64",
|
|
4
4
|
"description": "JavaScript implementation of libp2p, a modular peer to peer network stack",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p#readme",
|
|
@@ -80,6 +80,7 @@
|
|
|
80
80
|
"clean": "aegir clean",
|
|
81
81
|
"lint": "aegir lint",
|
|
82
82
|
"dep-check": "aegir dep-check",
|
|
83
|
+
"prepublishOnly": "node scripts/update-version.js",
|
|
83
84
|
"build": "aegir build",
|
|
84
85
|
"generate": "run-s generate:proto:*",
|
|
85
86
|
"generate:proto:circuit": "protons ./src/circuit/pb/index.proto",
|
|
@@ -98,7 +99,7 @@
|
|
|
98
99
|
},
|
|
99
100
|
"dependencies": {
|
|
100
101
|
"@achingbrain/nat-port-mapper": "^1.0.3",
|
|
101
|
-
"@libp2p/components": "^2.0.
|
|
102
|
+
"@libp2p/components": "^2.0.1",
|
|
102
103
|
"@libp2p/connection": "^4.0.0",
|
|
103
104
|
"@libp2p/crypto": "^1.0.0",
|
|
104
105
|
"@libp2p/interface-address-manager": "^1.0.1",
|
|
@@ -106,26 +107,26 @@
|
|
|
106
107
|
"@libp2p/interface-connection-encrypter": "^1.0.2",
|
|
107
108
|
"@libp2p/interface-content-routing": "^1.0.1",
|
|
108
109
|
"@libp2p/interface-dht": "^1.0.0",
|
|
109
|
-
"@libp2p/interface-metrics": "^
|
|
110
|
+
"@libp2p/interface-metrics": "^2.0.0",
|
|
110
111
|
"@libp2p/interface-peer-discovery": "^1.0.0",
|
|
111
112
|
"@libp2p/interface-peer-id": "^1.0.2",
|
|
112
113
|
"@libp2p/interface-peer-info": "^1.0.1",
|
|
113
114
|
"@libp2p/interface-peer-routing": "^1.0.0",
|
|
114
|
-
"@libp2p/interface-peer-store": "^1.
|
|
115
|
+
"@libp2p/interface-peer-store": "^1.2.0",
|
|
115
116
|
"@libp2p/interface-pubsub": "^1.0.3",
|
|
116
117
|
"@libp2p/interface-registrar": "^2.0.0",
|
|
117
|
-
"@libp2p/interface-stream-muxer": "^
|
|
118
|
+
"@libp2p/interface-stream-muxer": "^2.0.1",
|
|
118
119
|
"@libp2p/interface-transport": "^1.0.0",
|
|
119
120
|
"@libp2p/interfaces": "^3.0.2",
|
|
120
121
|
"@libp2p/logger": "^2.0.0",
|
|
121
122
|
"@libp2p/multistream-select": "^2.0.1",
|
|
122
|
-
"@libp2p/peer-collections": "^
|
|
123
|
+
"@libp2p/peer-collections": "^2.0.0",
|
|
123
124
|
"@libp2p/peer-id": "^1.1.10",
|
|
124
125
|
"@libp2p/peer-id-factory": "^1.0.9",
|
|
125
|
-
"@libp2p/peer-record": "^
|
|
126
|
+
"@libp2p/peer-record": "^3.0.0",
|
|
126
127
|
"@libp2p/peer-store": "^3.0.0",
|
|
127
|
-
"@libp2p/tracked-map": "^
|
|
128
|
-
"@libp2p/utils": "^
|
|
128
|
+
"@libp2p/tracked-map": "^2.0.1",
|
|
129
|
+
"@libp2p/utils": "^3.0.0",
|
|
129
130
|
"@multiformats/mafmt": "^11.0.2",
|
|
130
131
|
"@multiformats/multiaddr": "^10.1.8",
|
|
131
132
|
"abortable-iterator": "^4.0.2",
|
|
@@ -175,11 +176,11 @@
|
|
|
175
176
|
"@libp2p/floodsub": "^3.0.0",
|
|
176
177
|
"@libp2p/interface-compliance-tests": "^3.0.1",
|
|
177
178
|
"@libp2p/interface-connection-encrypter-compliance-tests": "^1.0.0",
|
|
178
|
-
"@libp2p/interface-mocks": "^
|
|
179
|
+
"@libp2p/interface-mocks": "^3.0.1",
|
|
179
180
|
"@libp2p/interop": "^2.0.0",
|
|
180
181
|
"@libp2p/kad-dht": "^3.0.0",
|
|
181
|
-
"@libp2p/mdns": "^
|
|
182
|
-
"@libp2p/mplex": "^
|
|
182
|
+
"@libp2p/mdns": "^3.0.0",
|
|
183
|
+
"@libp2p/mplex": "^4.0.0",
|
|
183
184
|
"@libp2p/pubsub": "^3.0.1",
|
|
184
185
|
"@libp2p/tcp": "^3.0.0",
|
|
185
186
|
"@libp2p/topology": "^3.0.0",
|
|
@@ -12,6 +12,7 @@ import { peerIdFromBytes } from '@libp2p/peer-id'
|
|
|
12
12
|
import type { Duplex } from 'it-stream-types'
|
|
13
13
|
import type { Circuit } from '../transport.js'
|
|
14
14
|
import type { ConnectionManager } from '@libp2p/interface-connection-manager'
|
|
15
|
+
import type { AbortOptions } from '@libp2p/interfaces'
|
|
15
16
|
|
|
16
17
|
const log = logger('libp2p:circuit:hop')
|
|
17
18
|
|
|
@@ -118,7 +119,7 @@ export async function handleHop (hopRequest: HopRequest) {
|
|
|
118
119
|
)
|
|
119
120
|
}
|
|
120
121
|
|
|
121
|
-
export interface HopConfig {
|
|
122
|
+
export interface HopConfig extends AbortOptions {
|
|
122
123
|
connection: Connection
|
|
123
124
|
request: CircuitPB
|
|
124
125
|
}
|
|
@@ -130,11 +131,14 @@ export interface HopConfig {
|
|
|
130
131
|
export async function hop (options: HopConfig): Promise<Duplex<Uint8Array>> {
|
|
131
132
|
const {
|
|
132
133
|
connection,
|
|
133
|
-
request
|
|
134
|
+
request,
|
|
135
|
+
signal
|
|
134
136
|
} = options
|
|
135
137
|
|
|
136
138
|
// Create a new stream to the relay
|
|
137
|
-
const stream = await connection.newStream(RELAY_CODEC
|
|
139
|
+
const stream = await connection.newStream(RELAY_CODEC, {
|
|
140
|
+
signal
|
|
141
|
+
})
|
|
138
142
|
// Send the HOP request
|
|
139
143
|
const streamHandler = new StreamHandler({ stream })
|
|
140
144
|
streamHandler.write(request)
|
|
@@ -156,7 +160,7 @@ export async function hop (options: HopConfig): Promise<Duplex<Uint8Array>> {
|
|
|
156
160
|
throw errCode(new Error(`HOP request failed with code "${response.code ?? 'unknown'}"`), Errors.ERR_HOP_REQUEST_FAILED)
|
|
157
161
|
}
|
|
158
162
|
|
|
159
|
-
export interface CanHopOptions {
|
|
163
|
+
export interface CanHopOptions extends AbortOptions {
|
|
160
164
|
connection: Connection
|
|
161
165
|
}
|
|
162
166
|
|
|
@@ -165,11 +169,14 @@ export interface CanHopOptions {
|
|
|
165
169
|
*/
|
|
166
170
|
export async function canHop (options: CanHopOptions) {
|
|
167
171
|
const {
|
|
168
|
-
connection
|
|
172
|
+
connection,
|
|
173
|
+
signal
|
|
169
174
|
} = options
|
|
170
175
|
|
|
171
176
|
// Create a new stream to the relay
|
|
172
|
-
const stream = await connection.newStream(RELAY_CODEC
|
|
177
|
+
const stream = await connection.newStream(RELAY_CODEC, {
|
|
178
|
+
signal
|
|
179
|
+
})
|
|
173
180
|
|
|
174
181
|
// Send the HOP request
|
|
175
182
|
const streamHandler = new StreamHandler({ stream })
|
|
@@ -5,6 +5,7 @@ import { StreamHandler } from './stream-handler.js'
|
|
|
5
5
|
import { validateAddrs } from './utils.js'
|
|
6
6
|
import type { Connection } from '@libp2p/interface-connection'
|
|
7
7
|
import type { Duplex } from 'it-stream-types'
|
|
8
|
+
import type { AbortOptions } from '@libp2p/interfaces'
|
|
8
9
|
|
|
9
10
|
const log = logger('libp2p:circuit:stop')
|
|
10
11
|
|
|
@@ -42,7 +43,7 @@ export function handleStop (options: HandleStopOptions): Duplex<Uint8Array> | un
|
|
|
42
43
|
return streamHandler.rest()
|
|
43
44
|
}
|
|
44
45
|
|
|
45
|
-
export interface StopOptions {
|
|
46
|
+
export interface StopOptions extends AbortOptions {
|
|
46
47
|
connection: Connection
|
|
47
48
|
request: CircuitPB
|
|
48
49
|
}
|
|
@@ -53,10 +54,13 @@ export interface StopOptions {
|
|
|
53
54
|
export async function stop (options: StopOptions) {
|
|
54
55
|
const {
|
|
55
56
|
connection,
|
|
56
|
-
request
|
|
57
|
+
request,
|
|
58
|
+
signal
|
|
57
59
|
} = options
|
|
58
60
|
|
|
59
|
-
const stream = await connection.newStream(
|
|
61
|
+
const stream = await connection.newStream(RELAY_CODEC, {
|
|
62
|
+
signal
|
|
63
|
+
})
|
|
60
64
|
log('starting stop request to %p', connection.remotePeer)
|
|
61
65
|
const streamHandler = new StreamHandler({ stream })
|
|
62
66
|
|
package/src/circuit/index.ts
CHANGED
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
import type { AddressSorter } from '@libp2p/interface-peer-store'
|
|
14
14
|
import type { Startable } from '@libp2p/interfaces/startable'
|
|
15
15
|
import type { Components } from '@libp2p/components'
|
|
16
|
+
import type { RelayConfig } from '../index.js'
|
|
16
17
|
|
|
17
18
|
const log = logger('libp2p:relay')
|
|
18
19
|
|
|
@@ -22,11 +23,6 @@ export interface RelayAdvertiseConfig {
|
|
|
22
23
|
ttl?: number
|
|
23
24
|
}
|
|
24
25
|
|
|
25
|
-
export interface HopConfig {
|
|
26
|
-
enabled?: boolean
|
|
27
|
-
active?: boolean
|
|
28
|
-
}
|
|
29
|
-
|
|
30
26
|
export interface AutoRelayConfig {
|
|
31
27
|
enabled?: boolean
|
|
32
28
|
|
|
@@ -36,13 +32,8 @@ export interface AutoRelayConfig {
|
|
|
36
32
|
maxListeners: number
|
|
37
33
|
}
|
|
38
34
|
|
|
39
|
-
export interface RelayInit {
|
|
35
|
+
export interface RelayInit extends RelayConfig {
|
|
40
36
|
addressSorter?: AddressSorter
|
|
41
|
-
maxListeners?: number
|
|
42
|
-
onError?: (error: Error, msg?: string) => void
|
|
43
|
-
hop: HopConfig
|
|
44
|
-
advertise: RelayAdvertiseConfig
|
|
45
|
-
autoRelay: AutoRelayConfig
|
|
46
37
|
}
|
|
47
38
|
|
|
48
39
|
export class Relay implements Startable {
|
package/src/circuit/transport.ts
CHANGED
|
@@ -17,12 +17,20 @@ import type { AbortOptions } from '@libp2p/interfaces'
|
|
|
17
17
|
import type { IncomingStreamData } from '@libp2p/interface-registrar'
|
|
18
18
|
import type { Listener, Transport, CreateListenerOptions, ConnectionHandler } from '@libp2p/interface-transport'
|
|
19
19
|
import type { Connection } from '@libp2p/interface-connection'
|
|
20
|
+
import type { RelayConfig } from '../index.js'
|
|
21
|
+
import { abortableDuplex } from 'abortable-iterator'
|
|
22
|
+
import { TimeoutController } from 'timeout-abort-controller'
|
|
20
23
|
|
|
21
24
|
const log = logger('libp2p:circuit')
|
|
22
25
|
|
|
23
26
|
export class Circuit implements Transport, Initializable {
|
|
24
27
|
private handler?: ConnectionHandler
|
|
25
28
|
private components: Components = new Components()
|
|
29
|
+
private readonly _init: RelayConfig
|
|
30
|
+
|
|
31
|
+
constructor (init: RelayConfig) {
|
|
32
|
+
this._init = init
|
|
33
|
+
}
|
|
26
34
|
|
|
27
35
|
init (components: Components): void {
|
|
28
36
|
this.components = components
|
|
@@ -54,49 +62,20 @@ export class Circuit implements Transport, Initializable {
|
|
|
54
62
|
|
|
55
63
|
async _onProtocol (data: IncomingStreamData) {
|
|
56
64
|
const { connection, stream } = data
|
|
57
|
-
const
|
|
58
|
-
const request = await streamHandler.read()
|
|
59
|
-
|
|
60
|
-
if (request == null) {
|
|
61
|
-
log('request was invalid, could not read from stream')
|
|
62
|
-
streamHandler.write({
|
|
63
|
-
type: CircuitPB.Type.STATUS,
|
|
64
|
-
code: CircuitPB.Status.MALFORMED_MESSAGE
|
|
65
|
-
})
|
|
66
|
-
streamHandler.close()
|
|
67
|
-
return
|
|
68
|
-
}
|
|
65
|
+
const controller = new TimeoutController(this._init.hop.timeout)
|
|
69
66
|
|
|
70
|
-
|
|
67
|
+
try {
|
|
68
|
+
const source = abortableDuplex(stream, controller.signal)
|
|
69
|
+
const streamHandler = new StreamHandler({
|
|
70
|
+
stream: {
|
|
71
|
+
...stream,
|
|
72
|
+
...source
|
|
73
|
+
}
|
|
74
|
+
})
|
|
75
|
+
const request = await streamHandler.read()
|
|
71
76
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
log('received CAN_HOP request from %p', connection.remotePeer)
|
|
75
|
-
await handleCanHop({ circuit: this, connection, streamHandler })
|
|
76
|
-
break
|
|
77
|
-
}
|
|
78
|
-
case CircuitPB.Type.HOP: {
|
|
79
|
-
log('received HOP request from %p', connection.remotePeer)
|
|
80
|
-
virtualConnection = await handleHop({
|
|
81
|
-
connection,
|
|
82
|
-
request,
|
|
83
|
-
streamHandler,
|
|
84
|
-
circuit: this,
|
|
85
|
-
connectionManager: this.components.getConnectionManager()
|
|
86
|
-
})
|
|
87
|
-
break
|
|
88
|
-
}
|
|
89
|
-
case CircuitPB.Type.STOP: {
|
|
90
|
-
log('received STOP request from %p', connection.remotePeer)
|
|
91
|
-
virtualConnection = await handleStop({
|
|
92
|
-
connection,
|
|
93
|
-
request,
|
|
94
|
-
streamHandler
|
|
95
|
-
})
|
|
96
|
-
break
|
|
97
|
-
}
|
|
98
|
-
default: {
|
|
99
|
-
log('Request of type %s not supported', request.type)
|
|
77
|
+
if (request == null) {
|
|
78
|
+
log('request was invalid, could not read from stream')
|
|
100
79
|
streamHandler.write({
|
|
101
80
|
type: CircuitPB.Type.STATUS,
|
|
102
81
|
code: CircuitPB.Status.MALFORMED_MESSAGE
|
|
@@ -104,27 +83,68 @@ export class Circuit implements Transport, Initializable {
|
|
|
104
83
|
streamHandler.close()
|
|
105
84
|
return
|
|
106
85
|
}
|
|
107
|
-
}
|
|
108
86
|
|
|
109
|
-
|
|
110
|
-
// @ts-expect-error dst peer will not be undefined
|
|
111
|
-
const remoteAddr = new Multiaddr(request.dstPeer.addrs[0])
|
|
112
|
-
// @ts-expect-error dst peer will not be undefined
|
|
113
|
-
const localAddr = new Multiaddr(request.srcPeer.addrs[0])
|
|
114
|
-
const maConn = streamToMaConnection({
|
|
115
|
-
stream: virtualConnection,
|
|
116
|
-
remoteAddr,
|
|
117
|
-
localAddr
|
|
118
|
-
})
|
|
119
|
-
const type = request.type === CircuitPB.Type.HOP ? 'relay' : 'inbound'
|
|
120
|
-
log('new %s connection %s', type, maConn.remoteAddr)
|
|
87
|
+
let virtualConnection
|
|
121
88
|
|
|
122
|
-
|
|
123
|
-
|
|
89
|
+
switch (request.type) {
|
|
90
|
+
case CircuitPB.Type.CAN_HOP: {
|
|
91
|
+
log('received CAN_HOP request from %p', connection.remotePeer)
|
|
92
|
+
await handleCanHop({ circuit: this, connection, streamHandler })
|
|
93
|
+
break
|
|
94
|
+
}
|
|
95
|
+
case CircuitPB.Type.HOP: {
|
|
96
|
+
log('received HOP request from %p', connection.remotePeer)
|
|
97
|
+
virtualConnection = await handleHop({
|
|
98
|
+
connection,
|
|
99
|
+
request,
|
|
100
|
+
streamHandler,
|
|
101
|
+
circuit: this,
|
|
102
|
+
connectionManager: this.components.getConnectionManager()
|
|
103
|
+
})
|
|
104
|
+
break
|
|
105
|
+
}
|
|
106
|
+
case CircuitPB.Type.STOP: {
|
|
107
|
+
log('received STOP request from %p', connection.remotePeer)
|
|
108
|
+
virtualConnection = await handleStop({
|
|
109
|
+
connection,
|
|
110
|
+
request,
|
|
111
|
+
streamHandler
|
|
112
|
+
})
|
|
113
|
+
break
|
|
114
|
+
}
|
|
115
|
+
default: {
|
|
116
|
+
log('Request of type %s not supported', request.type)
|
|
117
|
+
streamHandler.write({
|
|
118
|
+
type: CircuitPB.Type.STATUS,
|
|
119
|
+
code: CircuitPB.Status.MALFORMED_MESSAGE
|
|
120
|
+
})
|
|
121
|
+
streamHandler.close()
|
|
122
|
+
return
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
if (virtualConnection != null) {
|
|
127
|
+
// @ts-expect-error dst peer will not be undefined
|
|
128
|
+
const remoteAddr = new Multiaddr(request.dstPeer.addrs[0])
|
|
129
|
+
// @ts-expect-error dst peer will not be undefined
|
|
130
|
+
const localAddr = new Multiaddr(request.srcPeer.addrs[0])
|
|
131
|
+
const maConn = streamToMaConnection({
|
|
132
|
+
stream: virtualConnection,
|
|
133
|
+
remoteAddr,
|
|
134
|
+
localAddr
|
|
135
|
+
})
|
|
136
|
+
const type = request.type === CircuitPB.Type.HOP ? 'relay' : 'inbound'
|
|
137
|
+
log('new %s connection %s', type, maConn.remoteAddr)
|
|
138
|
+
|
|
139
|
+
const conn = await this.components.getUpgrader().upgradeInbound(maConn)
|
|
140
|
+
log('%s connection %s upgraded', type, maConn.remoteAddr)
|
|
124
141
|
|
|
125
|
-
|
|
126
|
-
|
|
142
|
+
if (this.handler != null) {
|
|
143
|
+
this.handler(conn)
|
|
144
|
+
}
|
|
127
145
|
}
|
|
146
|
+
} finally {
|
|
147
|
+
controller.clear()
|
|
128
148
|
}
|
|
129
149
|
}
|
|
130
150
|
|
|
@@ -160,6 +180,7 @@ export class Circuit implements Transport, Initializable {
|
|
|
160
180
|
|
|
161
181
|
try {
|
|
162
182
|
const virtualConnection = await hop({
|
|
183
|
+
...options,
|
|
163
184
|
connection: relayConnection,
|
|
164
185
|
request: {
|
|
165
186
|
type: CircuitPB.Type.HOP,
|