@libp2p/webtransport 3.1.10-0f5c305af → 3.1.10-3dee5df4d
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/README.md +1 -5
- package/dist/index.min.js +9 -9
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +19 -17
- package/dist/src/index.js.map +1 -1
- package/dist/src/stream.d.ts +2 -1
- package/dist/src/stream.d.ts.map +1 -1
- package/dist/src/stream.js +4 -4
- package/dist/src/stream.js.map +1 -1
- package/package.json +10 -26
- package/src/index.ts +35 -18
- package/src/stream.ts +5 -6
package/dist/src/index.d.ts
CHANGED
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
* ```
|
|
22
22
|
*/
|
|
23
23
|
import { type Transport } from '@libp2p/interface/transport';
|
|
24
|
+
import type { ComponentLogger } from '@libp2p/interface';
|
|
24
25
|
import type { CounterGroup, Metrics } from '@libp2p/interface/metrics';
|
|
25
26
|
import type { PeerId } from '@libp2p/interface/peer-id';
|
|
26
27
|
export interface WebTransportInit {
|
|
@@ -29,6 +30,7 @@ export interface WebTransportInit {
|
|
|
29
30
|
export interface WebTransportComponents {
|
|
30
31
|
peerId: PeerId;
|
|
31
32
|
metrics?: Metrics;
|
|
33
|
+
logger: ComponentLogger;
|
|
32
34
|
}
|
|
33
35
|
export interface WebTransportMetrics {
|
|
34
36
|
dialerEvents: CounterGroup;
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,KAAK,SAAS,EAAuE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,KAAK,SAAS,EAAuE,MAAM,6BAA6B,CAAA;AAOjI,OAAO,KAAK,EAAE,eAAe,EAAU,MAAM,mBAAmB,CAAA;AAEhE,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AASvD,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,YAAY,CAAA;CAC3B;AAiUD,wBAAgB,YAAY,CAAE,IAAI,GAAE,gBAAqB,GAAG,CAAC,UAAU,EAAE,sBAAsB,KAAK,SAAS,CAE5G"}
|
package/dist/src/index.js
CHANGED
|
@@ -22,19 +22,19 @@
|
|
|
22
22
|
*/
|
|
23
23
|
import { noise } from '@chainsafe/libp2p-noise';
|
|
24
24
|
import { symbol } from '@libp2p/interface/transport';
|
|
25
|
-
import { logger } from '@libp2p/logger';
|
|
26
25
|
import {} from '@multiformats/multiaddr';
|
|
27
26
|
import { WebTransport as WebTransportMatcher } from '@multiformats/multiaddr-matcher';
|
|
28
27
|
import { webtransportBiDiStreamToStream } from './stream.js';
|
|
29
28
|
import { inertDuplex } from './utils/inert-duplex.js';
|
|
30
29
|
import { isSubset } from './utils/is-subset.js';
|
|
31
30
|
import { parseMultiaddr } from './utils/parse-multiaddr.js';
|
|
32
|
-
const log = logger('libp2p:webtransport');
|
|
33
31
|
class WebTransportTransport {
|
|
32
|
+
log;
|
|
34
33
|
components;
|
|
35
34
|
config;
|
|
36
35
|
metrics;
|
|
37
36
|
constructor(components, init = {}) {
|
|
37
|
+
this.log = components.logger.forComponent('libp2p:webtransport');
|
|
38
38
|
this.components = components;
|
|
39
39
|
this.config = {
|
|
40
40
|
maxInboundStreams: init.maxInboundStreams ?? 1000
|
|
@@ -52,7 +52,7 @@ class WebTransportTransport {
|
|
|
52
52
|
[symbol] = true;
|
|
53
53
|
async dial(ma, options) {
|
|
54
54
|
options?.signal?.throwIfAborted();
|
|
55
|
-
log('dialing %s', ma);
|
|
55
|
+
this.log('dialing %s', ma);
|
|
56
56
|
const localPeer = this.components.peerId;
|
|
57
57
|
if (localPeer === undefined) {
|
|
58
58
|
throw new Error('Need a local peerid');
|
|
@@ -89,7 +89,7 @@ class WebTransportTransport {
|
|
|
89
89
|
wt.close();
|
|
90
90
|
}
|
|
91
91
|
catch (err) {
|
|
92
|
-
log.error('error closing wt session', err);
|
|
92
|
+
this.log.error('error closing wt session', err);
|
|
93
93
|
}
|
|
94
94
|
finally {
|
|
95
95
|
// This is how we specify the connection is closed and shouldn't be used.
|
|
@@ -119,7 +119,7 @@ class WebTransportTransport {
|
|
|
119
119
|
this.metrics?.dialerEvents.increment({ ready: true });
|
|
120
120
|
// this promise resolves/throws when the session is closed
|
|
121
121
|
wt.closed.catch((err) => {
|
|
122
|
-
log.error('error on remote wt session close', err);
|
|
122
|
+
this.log.error('error on remote wt session close', err);
|
|
123
123
|
})
|
|
124
124
|
.finally(() => {
|
|
125
125
|
cleanUpWTSession('remote_close');
|
|
@@ -130,17 +130,18 @@ class WebTransportTransport {
|
|
|
130
130
|
this.metrics?.dialerEvents.increment({ open: true });
|
|
131
131
|
maConn = {
|
|
132
132
|
close: async () => {
|
|
133
|
-
log('Closing webtransport');
|
|
133
|
+
this.log('Closing webtransport');
|
|
134
134
|
cleanUpWTSession('close');
|
|
135
135
|
},
|
|
136
136
|
abort: (err) => {
|
|
137
|
-
log('aborting webtransport due to passed err', err);
|
|
137
|
+
this.log('aborting webtransport due to passed err', err);
|
|
138
138
|
cleanUpWTSession('abort');
|
|
139
139
|
},
|
|
140
140
|
remoteAddr: ma,
|
|
141
141
|
timeline: {
|
|
142
142
|
open: Date.now()
|
|
143
143
|
},
|
|
144
|
+
log: this.components.logger.forComponent('libp2p:webtransport:maconn'),
|
|
144
145
|
// This connection is never used directly since webtransport supports native streams.
|
|
145
146
|
...inertDuplex()
|
|
146
147
|
};
|
|
@@ -148,7 +149,7 @@ class WebTransportTransport {
|
|
|
148
149
|
return await options.upgrader.upgradeOutbound(maConn, { skipEncryption: true, muxerFactory: this.webtransportMuxer(wt), skipProtection: true });
|
|
149
150
|
}
|
|
150
151
|
catch (err) {
|
|
151
|
-
log.error('caught wt session err', err);
|
|
152
|
+
this.log.error('caught wt session err', err);
|
|
152
153
|
if (authenticated) {
|
|
153
154
|
cleanUpWTSession('upgrade_error');
|
|
154
155
|
}
|
|
@@ -193,10 +194,10 @@ class WebTransportTransport {
|
|
|
193
194
|
const { remoteExtensions } = await n.secureOutbound(localPeer, duplex, remotePeer);
|
|
194
195
|
// We're done with this authentication stream
|
|
195
196
|
writer.close().catch((err) => {
|
|
196
|
-
log.error(`Failed to close authentication stream writer: ${err.message}`);
|
|
197
|
+
this.log.error(`Failed to close authentication stream writer: ${err.message}`);
|
|
197
198
|
});
|
|
198
199
|
reader.cancel().catch((err) => {
|
|
199
|
-
log.error(`Failed to close authentication stream reader: ${err.message}`);
|
|
200
|
+
this.log.error(`Failed to close authentication stream reader: ${err.message}`);
|
|
200
201
|
});
|
|
201
202
|
// Verify the certhashes we used when dialing are a subset of the certhashes relayed by the remote peer
|
|
202
203
|
if (!isSubset(remoteExtensions?.webtransportCerthashes ?? [], certhashes.map(ch => ch.bytes))) {
|
|
@@ -207,6 +208,7 @@ class WebTransportTransport {
|
|
|
207
208
|
webtransportMuxer(wt) {
|
|
208
209
|
let streamIDCounter = 0;
|
|
209
210
|
const config = this.config;
|
|
211
|
+
const self = this;
|
|
210
212
|
return {
|
|
211
213
|
protocol: 'webtransport',
|
|
212
214
|
createStreamMuxer: (init) => {
|
|
@@ -227,27 +229,27 @@ class WebTransportTransport {
|
|
|
227
229
|
if (activeStreams.length >= config.maxInboundStreams) {
|
|
228
230
|
// We've reached our limit, close this stream.
|
|
229
231
|
wtStream.writable.close().catch((err) => {
|
|
230
|
-
log.error(`Failed to close inbound stream that crossed our maxInboundStream limit: ${err.message}`);
|
|
232
|
+
self.log.error(`Failed to close inbound stream that crossed our maxInboundStream limit: ${err.message}`);
|
|
231
233
|
});
|
|
232
234
|
wtStream.readable.cancel().catch((err) => {
|
|
233
|
-
log.error(`Failed to close inbound stream that crossed our maxInboundStream limit: ${err.message}`);
|
|
235
|
+
self.log.error(`Failed to close inbound stream that crossed our maxInboundStream limit: ${err.message}`);
|
|
234
236
|
});
|
|
235
237
|
}
|
|
236
238
|
else {
|
|
237
|
-
const stream = await webtransportBiDiStreamToStream(wtStream, String(streamIDCounter++), 'inbound', activeStreams, init?.onStreamEnd);
|
|
239
|
+
const stream = await webtransportBiDiStreamToStream(wtStream, String(streamIDCounter++), 'inbound', activeStreams, init?.onStreamEnd, self.components.logger);
|
|
238
240
|
activeStreams.push(stream);
|
|
239
241
|
init?.onIncomingStream?.(stream);
|
|
240
242
|
}
|
|
241
243
|
}
|
|
242
244
|
})().catch(() => {
|
|
243
|
-
log.error('WebTransport failed to receive incoming stream');
|
|
245
|
+
this.log.error('WebTransport failed to receive incoming stream');
|
|
244
246
|
});
|
|
245
247
|
const muxer = {
|
|
246
248
|
protocol: 'webtransport',
|
|
247
249
|
streams: activeStreams,
|
|
248
250
|
newStream: async (name) => {
|
|
249
251
|
const wtStream = await wt.createBidirectionalStream();
|
|
250
|
-
const stream = await webtransportBiDiStreamToStream(wtStream, String(streamIDCounter++), init?.direction ?? 'outbound', activeStreams, init?.onStreamEnd);
|
|
252
|
+
const stream = await webtransportBiDiStreamToStream(wtStream, String(streamIDCounter++), init?.direction ?? 'outbound', activeStreams, init?.onStreamEnd, self.components.logger);
|
|
251
253
|
activeStreams.push(stream);
|
|
252
254
|
return stream;
|
|
253
255
|
},
|
|
@@ -255,11 +257,11 @@ class WebTransportTransport {
|
|
|
255
257
|
* Close or abort all tracked streams and stop the muxer
|
|
256
258
|
*/
|
|
257
259
|
close: async (options) => {
|
|
258
|
-
log('Closing webtransport muxer');
|
|
260
|
+
this.log('Closing webtransport muxer');
|
|
259
261
|
await Promise.all(activeStreams.map(async (s) => s.close(options)));
|
|
260
262
|
},
|
|
261
263
|
abort: (err) => {
|
|
262
|
-
log('Aborting webtransport muxer with err:', err);
|
|
264
|
+
this.log('Aborting webtransport muxer with err:', err);
|
|
263
265
|
for (const stream of activeStreams) {
|
|
264
266
|
stream.abort(err);
|
|
265
267
|
}
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC/C,OAAO,EAAkB,MAAM,EAA+D,MAAM,6BAA6B,CAAA;AACjI,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/stream.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ComponentLogger } from '@libp2p/interface';
|
|
1
2
|
import type { Direction, Stream } from '@libp2p/interface/connection';
|
|
2
|
-
export declare function webtransportBiDiStreamToStream(bidiStream: WebTransportBidirectionalStream, streamId: string, direction: Direction, activeStreams: Stream[], onStreamEnd: undefined | ((s: Stream) => void)): Promise<Stream>;
|
|
3
|
+
export declare function webtransportBiDiStreamToStream(bidiStream: WebTransportBidirectionalStream, streamId: string, direction: Direction, activeStreams: Stream[], onStreamEnd: undefined | ((s: Stream) => void), logger: ComponentLogger): Promise<Stream>;
|
|
3
4
|
//# sourceMappingURL=stream.d.ts.map
|
package/dist/src/stream.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAgB,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAGrE,wBAAsB,8BAA8B,CAAE,UAAU,EAAE,+BAA+B,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAmL5P"}
|
package/dist/src/stream.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { logger } from '@libp2p/logger';
|
|
2
1
|
import { Uint8ArrayList } from 'uint8arraylist';
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
export async function webtransportBiDiStreamToStream(bidiStream, streamId, direction, activeStreams, onStreamEnd, logger) {
|
|
3
|
+
const log = logger.forComponent(`libp2p:webtransport:stream:${direction}:${streamId}`);
|
|
5
4
|
const writer = bidiStream.writable.getWriter();
|
|
6
5
|
const reader = bidiStream.readable.getReader();
|
|
7
6
|
await writer.ready;
|
|
@@ -154,7 +153,8 @@ export async function webtransportBiDiStreamToStream(bidiStream, streamId, direc
|
|
|
154
153
|
this.writeStatus = 'closed';
|
|
155
154
|
await stream.closeWrite();
|
|
156
155
|
}
|
|
157
|
-
}
|
|
156
|
+
},
|
|
157
|
+
log
|
|
158
158
|
};
|
|
159
159
|
return stream;
|
|
160
160
|
}
|
package/dist/src/stream.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/webtransport",
|
|
3
|
-
"version": "3.1.10-
|
|
3
|
+
"version": "3.1.10-3dee5df4d",
|
|
4
4
|
"description": "JavaScript implementation of the WebTransport module that libp2p uses and that implements the interface-transport spec",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
|
-
"homepage": "https://github.com/libp2p/js-libp2p/tree/
|
|
6
|
+
"homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/transport-webtransport#readme",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
9
|
"url": "git+https://github.com/libp2p/js-libp2p.git"
|
|
@@ -16,22 +16,6 @@
|
|
|
16
16
|
],
|
|
17
17
|
"type": "module",
|
|
18
18
|
"types": "./dist/src/index.d.ts",
|
|
19
|
-
"typesVersions": {
|
|
20
|
-
"*": {
|
|
21
|
-
"*": [
|
|
22
|
-
"*",
|
|
23
|
-
"dist/*",
|
|
24
|
-
"dist/src/*",
|
|
25
|
-
"dist/src/*/index"
|
|
26
|
-
],
|
|
27
|
-
"src/*": [
|
|
28
|
-
"*",
|
|
29
|
-
"dist/*",
|
|
30
|
-
"dist/src/*",
|
|
31
|
-
"dist/src/*/index"
|
|
32
|
-
]
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
19
|
"files": [
|
|
36
20
|
"src",
|
|
37
21
|
"dist",
|
|
@@ -62,20 +46,20 @@
|
|
|
62
46
|
},
|
|
63
47
|
"dependencies": {
|
|
64
48
|
"@chainsafe/libp2p-noise": "^13.0.0",
|
|
65
|
-
"@libp2p/interface": "0.1.6-
|
|
66
|
-
"@libp2p/
|
|
67
|
-
"@
|
|
68
|
-
"@multiformats/multiaddr": "^
|
|
69
|
-
"@multiformats/multiaddr-matcher": "^1.0.1",
|
|
49
|
+
"@libp2p/interface": "0.1.6-3dee5df4d",
|
|
50
|
+
"@libp2p/peer-id": "3.0.6-3dee5df4d",
|
|
51
|
+
"@multiformats/multiaddr": "^12.1.10",
|
|
52
|
+
"@multiformats/multiaddr-matcher": "^1.1.0",
|
|
70
53
|
"it-stream-types": "^2.0.1",
|
|
71
|
-
"multiformats": "^12.
|
|
54
|
+
"multiformats": "^12.1.3",
|
|
72
55
|
"uint8arraylist": "^2.4.3",
|
|
73
56
|
"uint8arrays": "^4.0.6"
|
|
74
57
|
},
|
|
75
58
|
"devDependencies": {
|
|
76
|
-
"@libp2p/
|
|
59
|
+
"@libp2p/logger": "3.1.0-3dee5df4d",
|
|
60
|
+
"@libp2p/peer-id-factory": "3.0.8-3dee5df4d",
|
|
77
61
|
"aegir": "^41.0.2",
|
|
78
|
-
"libp2p": "0.46.21-
|
|
62
|
+
"libp2p": "0.46.21-3dee5df4d",
|
|
79
63
|
"p-defer": "^4.0.0"
|
|
80
64
|
},
|
|
81
65
|
"browser": {
|
package/src/index.ts
CHANGED
|
@@ -23,13 +23,13 @@
|
|
|
23
23
|
|
|
24
24
|
import { noise } from '@chainsafe/libp2p-noise'
|
|
25
25
|
import { type Transport, symbol, type CreateListenerOptions, type DialOptions, type Listener } from '@libp2p/interface/transport'
|
|
26
|
-
import { logger } from '@libp2p/logger'
|
|
27
26
|
import { type Multiaddr, type AbortOptions } from '@multiformats/multiaddr'
|
|
28
27
|
import { WebTransport as WebTransportMatcher } from '@multiformats/multiaddr-matcher'
|
|
29
28
|
import { webtransportBiDiStreamToStream } from './stream.js'
|
|
30
29
|
import { inertDuplex } from './utils/inert-duplex.js'
|
|
31
30
|
import { isSubset } from './utils/is-subset.js'
|
|
32
31
|
import { parseMultiaddr } from './utils/parse-multiaddr.js'
|
|
32
|
+
import type { ComponentLogger, Logger } from '@libp2p/interface'
|
|
33
33
|
import type { Connection, MultiaddrConnection, Stream } from '@libp2p/interface/connection'
|
|
34
34
|
import type { CounterGroup, Metrics } from '@libp2p/interface/metrics'
|
|
35
35
|
import type { PeerId } from '@libp2p/interface/peer-id'
|
|
@@ -41,8 +41,6 @@ interface WebTransportSessionCleanup {
|
|
|
41
41
|
(metric: string): void
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
const log = logger('libp2p:webtransport')
|
|
45
|
-
|
|
46
44
|
export interface WebTransportInit {
|
|
47
45
|
maxInboundStreams?: number
|
|
48
46
|
}
|
|
@@ -50,6 +48,7 @@ export interface WebTransportInit {
|
|
|
50
48
|
export interface WebTransportComponents {
|
|
51
49
|
peerId: PeerId
|
|
52
50
|
metrics?: Metrics
|
|
51
|
+
logger: ComponentLogger
|
|
53
52
|
}
|
|
54
53
|
|
|
55
54
|
export interface WebTransportMetrics {
|
|
@@ -57,11 +56,13 @@ export interface WebTransportMetrics {
|
|
|
57
56
|
}
|
|
58
57
|
|
|
59
58
|
class WebTransportTransport implements Transport {
|
|
59
|
+
private readonly log: Logger
|
|
60
60
|
private readonly components: WebTransportComponents
|
|
61
61
|
private readonly config: Required<WebTransportInit>
|
|
62
62
|
private readonly metrics?: WebTransportMetrics
|
|
63
63
|
|
|
64
64
|
constructor (components: WebTransportComponents, init: WebTransportInit = {}) {
|
|
65
|
+
this.log = components.logger.forComponent('libp2p:webtransport')
|
|
65
66
|
this.components = components
|
|
66
67
|
this.config = {
|
|
67
68
|
maxInboundStreams: init.maxInboundStreams ?? 1000
|
|
@@ -84,7 +85,7 @@ class WebTransportTransport implements Transport {
|
|
|
84
85
|
async dial (ma: Multiaddr, options: DialOptions): Promise<Connection> {
|
|
85
86
|
options?.signal?.throwIfAborted()
|
|
86
87
|
|
|
87
|
-
log('dialing %s', ma)
|
|
88
|
+
this.log('dialing %s', ma)
|
|
88
89
|
const localPeer = this.components.peerId
|
|
89
90
|
if (localPeer === undefined) {
|
|
90
91
|
throw new Error('Need a local peerid')
|
|
@@ -131,7 +132,7 @@ class WebTransportTransport implements Transport {
|
|
|
131
132
|
this.metrics?.dialerEvents.increment({ [metric]: true })
|
|
132
133
|
wt.close()
|
|
133
134
|
} catch (err) {
|
|
134
|
-
log.error('error closing wt session', err)
|
|
135
|
+
this.log.error('error closing wt session', err)
|
|
135
136
|
} finally {
|
|
136
137
|
// This is how we specify the connection is closed and shouldn't be used.
|
|
137
138
|
if (maConn != null) {
|
|
@@ -164,7 +165,7 @@ class WebTransportTransport implements Transport {
|
|
|
164
165
|
|
|
165
166
|
// this promise resolves/throws when the session is closed
|
|
166
167
|
wt.closed.catch((err: Error) => {
|
|
167
|
-
log.error('error on remote wt session close', err)
|
|
168
|
+
this.log.error('error on remote wt session close', err)
|
|
168
169
|
})
|
|
169
170
|
.finally(() => {
|
|
170
171
|
cleanUpWTSession('remote_close')
|
|
@@ -178,17 +179,18 @@ class WebTransportTransport implements Transport {
|
|
|
178
179
|
|
|
179
180
|
maConn = {
|
|
180
181
|
close: async () => {
|
|
181
|
-
log('Closing webtransport')
|
|
182
|
+
this.log('Closing webtransport')
|
|
182
183
|
cleanUpWTSession('close')
|
|
183
184
|
},
|
|
184
185
|
abort: (err: Error) => {
|
|
185
|
-
log('aborting webtransport due to passed err', err)
|
|
186
|
+
this.log('aborting webtransport due to passed err', err)
|
|
186
187
|
cleanUpWTSession('abort')
|
|
187
188
|
},
|
|
188
189
|
remoteAddr: ma,
|
|
189
190
|
timeline: {
|
|
190
191
|
open: Date.now()
|
|
191
192
|
},
|
|
193
|
+
log: this.components.logger.forComponent('libp2p:webtransport:maconn'),
|
|
192
194
|
// This connection is never used directly since webtransport supports native streams.
|
|
193
195
|
...inertDuplex()
|
|
194
196
|
}
|
|
@@ -197,7 +199,7 @@ class WebTransportTransport implements Transport {
|
|
|
197
199
|
|
|
198
200
|
return await options.upgrader.upgradeOutbound(maConn, { skipEncryption: true, muxerFactory: this.webtransportMuxer(wt), skipProtection: true })
|
|
199
201
|
} catch (err: any) {
|
|
200
|
-
log.error('caught wt session err', err)
|
|
202
|
+
this.log.error('caught wt session err', err)
|
|
201
203
|
|
|
202
204
|
if (authenticated) {
|
|
203
205
|
cleanUpWTSession('upgrade_error')
|
|
@@ -248,11 +250,11 @@ class WebTransportTransport implements Transport {
|
|
|
248
250
|
|
|
249
251
|
// We're done with this authentication stream
|
|
250
252
|
writer.close().catch((err: Error) => {
|
|
251
|
-
log.error(`Failed to close authentication stream writer: ${err.message}`)
|
|
253
|
+
this.log.error(`Failed to close authentication stream writer: ${err.message}`)
|
|
252
254
|
})
|
|
253
255
|
|
|
254
256
|
reader.cancel().catch((err: Error) => {
|
|
255
|
-
log.error(`Failed to close authentication stream reader: ${err.message}`)
|
|
257
|
+
this.log.error(`Failed to close authentication stream reader: ${err.message}`)
|
|
256
258
|
})
|
|
257
259
|
|
|
258
260
|
// Verify the certhashes we used when dialing are a subset of the certhashes relayed by the remote peer
|
|
@@ -266,6 +268,7 @@ class WebTransportTransport implements Transport {
|
|
|
266
268
|
webtransportMuxer (wt: WebTransport): StreamMuxerFactory {
|
|
267
269
|
let streamIDCounter = 0
|
|
268
270
|
const config = this.config
|
|
271
|
+
const self = this
|
|
269
272
|
return {
|
|
270
273
|
protocol: 'webtransport',
|
|
271
274
|
createStreamMuxer: (init?: StreamMuxerInit): StreamMuxer => {
|
|
@@ -292,19 +295,26 @@ class WebTransportTransport implements Transport {
|
|
|
292
295
|
if (activeStreams.length >= config.maxInboundStreams) {
|
|
293
296
|
// We've reached our limit, close this stream.
|
|
294
297
|
wtStream.writable.close().catch((err: Error) => {
|
|
295
|
-
log.error(`Failed to close inbound stream that crossed our maxInboundStream limit: ${err.message}`)
|
|
298
|
+
self.log.error(`Failed to close inbound stream that crossed our maxInboundStream limit: ${err.message}`)
|
|
296
299
|
})
|
|
297
300
|
wtStream.readable.cancel().catch((err: Error) => {
|
|
298
|
-
log.error(`Failed to close inbound stream that crossed our maxInboundStream limit: ${err.message}`)
|
|
301
|
+
self.log.error(`Failed to close inbound stream that crossed our maxInboundStream limit: ${err.message}`)
|
|
299
302
|
})
|
|
300
303
|
} else {
|
|
301
|
-
const stream = await webtransportBiDiStreamToStream(
|
|
304
|
+
const stream = await webtransportBiDiStreamToStream(
|
|
305
|
+
wtStream,
|
|
306
|
+
String(streamIDCounter++),
|
|
307
|
+
'inbound',
|
|
308
|
+
activeStreams,
|
|
309
|
+
init?.onStreamEnd,
|
|
310
|
+
self.components.logger
|
|
311
|
+
)
|
|
302
312
|
activeStreams.push(stream)
|
|
303
313
|
init?.onIncomingStream?.(stream)
|
|
304
314
|
}
|
|
305
315
|
}
|
|
306
316
|
})().catch(() => {
|
|
307
|
-
log.error('WebTransport failed to receive incoming stream')
|
|
317
|
+
this.log.error('WebTransport failed to receive incoming stream')
|
|
308
318
|
})
|
|
309
319
|
|
|
310
320
|
const muxer: StreamMuxer = {
|
|
@@ -313,7 +323,14 @@ class WebTransportTransport implements Transport {
|
|
|
313
323
|
newStream: async (name?: string): Promise<Stream> => {
|
|
314
324
|
const wtStream = await wt.createBidirectionalStream()
|
|
315
325
|
|
|
316
|
-
const stream = await webtransportBiDiStreamToStream(
|
|
326
|
+
const stream = await webtransportBiDiStreamToStream(
|
|
327
|
+
wtStream,
|
|
328
|
+
String(streamIDCounter++),
|
|
329
|
+
init?.direction ?? 'outbound',
|
|
330
|
+
activeStreams,
|
|
331
|
+
init?.onStreamEnd,
|
|
332
|
+
self.components.logger
|
|
333
|
+
)
|
|
317
334
|
activeStreams.push(stream)
|
|
318
335
|
|
|
319
336
|
return stream
|
|
@@ -323,14 +340,14 @@ class WebTransportTransport implements Transport {
|
|
|
323
340
|
* Close or abort all tracked streams and stop the muxer
|
|
324
341
|
*/
|
|
325
342
|
close: async (options?: AbortOptions) => {
|
|
326
|
-
log('Closing webtransport muxer')
|
|
343
|
+
this.log('Closing webtransport muxer')
|
|
327
344
|
|
|
328
345
|
await Promise.all(
|
|
329
346
|
activeStreams.map(async s => s.close(options))
|
|
330
347
|
)
|
|
331
348
|
},
|
|
332
349
|
abort: (err: Error) => {
|
|
333
|
-
log('Aborting webtransport muxer with err:', err)
|
|
350
|
+
this.log('Aborting webtransport muxer with err:', err)
|
|
334
351
|
|
|
335
352
|
for (const stream of activeStreams) {
|
|
336
353
|
stream.abort(err)
|
package/src/stream.ts
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import { logger } from '@libp2p/logger'
|
|
2
1
|
import { Uint8ArrayList } from 'uint8arraylist'
|
|
3
|
-
import type { AbortOptions } from '@libp2p/interface'
|
|
2
|
+
import type { AbortOptions, ComponentLogger } from '@libp2p/interface'
|
|
4
3
|
import type { Direction, Stream } from '@libp2p/interface/connection'
|
|
5
4
|
import type { Source } from 'it-stream-types'
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export async function webtransportBiDiStreamToStream (bidiStream: WebTransportBidirectionalStream, streamId: string, direction: Direction, activeStreams: Stream[], onStreamEnd: undefined | ((s: Stream) => void)): Promise<Stream> {
|
|
6
|
+
export async function webtransportBiDiStreamToStream (bidiStream: WebTransportBidirectionalStream, streamId: string, direction: Direction, activeStreams: Stream[], onStreamEnd: undefined | ((s: Stream) => void), logger: ComponentLogger): Promise<Stream> {
|
|
7
|
+
const log = logger.forComponent(`libp2p:webtransport:stream:${direction}:${streamId}`)
|
|
10
8
|
const writer = bidiStream.writable.getWriter()
|
|
11
9
|
const reader = bidiStream.readable.getReader()
|
|
12
10
|
await writer.ready
|
|
@@ -179,7 +177,8 @@ export async function webtransportBiDiStreamToStream (bidiStream: WebTransportBi
|
|
|
179
177
|
|
|
180
178
|
await stream.closeWrite()
|
|
181
179
|
}
|
|
182
|
-
}
|
|
180
|
+
},
|
|
181
|
+
log
|
|
183
182
|
}
|
|
184
183
|
|
|
185
184
|
return stream
|