@libp2p/webrtc 6.0.27-e86b39e5d → 6.0.28
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/index.min.js +6 -6
- package/dist/index.min.js.map +3 -3
- package/dist/src/constants.d.ts +28 -0
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +28 -0
- package/dist/src/constants.js.map +1 -1
- package/dist/src/muxer.d.ts +36 -4
- package/dist/src/muxer.d.ts.map +1 -1
- package/dist/src/muxer.js +115 -8
- package/dist/src/muxer.js.map +1 -1
- package/dist/src/private-to-private/initiate-connection.d.ts +2 -1
- package/dist/src/private-to-private/initiate-connection.d.ts.map +1 -1
- package/dist/src/private-to-private/initiate-connection.js +6 -2
- package/dist/src/private-to-private/initiate-connection.js.map +1 -1
- package/dist/src/private-to-private/transport.d.ts +7 -0
- package/dist/src/private-to-private/transport.d.ts.map +1 -1
- package/dist/src/private-to-private/transport.js +25 -9
- package/dist/src/private-to-private/transport.js.map +1 -1
- package/dist/src/private-to-public/listener.d.ts +1 -0
- package/dist/src/private-to-public/listener.d.ts.map +1 -1
- package/dist/src/private-to-public/listener.js +3 -1
- package/dist/src/private-to-public/listener.js.map +1 -1
- package/dist/src/private-to-public/transport.browser.d.ts +7 -0
- package/dist/src/private-to-public/transport.browser.d.ts.map +1 -1
- package/dist/src/private-to-public/transport.browser.js +4 -1
- package/dist/src/private-to-public/transport.browser.js.map +1 -1
- package/dist/src/private-to-public/utils/connect.js +2 -0
- package/dist/src/private-to-public/utils/connect.js.map +1 -1
- package/dist/src/private-to-public/utils/get-rtcpeerconnection.browser.d.ts.map +1 -1
- package/dist/src/private-to-public/utils/get-rtcpeerconnection.browser.js +3 -1
- package/dist/src/private-to-public/utils/get-rtcpeerconnection.browser.js.map +1 -1
- package/dist/src/private-to-public/utils/get-rtcpeerconnection.d.ts +4 -1
- package/dist/src/private-to-public/utils/get-rtcpeerconnection.d.ts.map +1 -1
- package/dist/src/private-to-public/utils/get-rtcpeerconnection.js +21 -13
- package/dist/src/private-to-public/utils/get-rtcpeerconnection.js.map +1 -1
- package/dist/src/private-to-public/utils/stun-listener.d.ts.map +1 -1
- package/dist/src/private-to-public/utils/stun-listener.js +2 -5
- package/dist/src/private-to-public/utils/stun-listener.js.map +1 -1
- package/dist/src/util.d.ts +4 -2
- package/dist/src/util.d.ts.map +1 -1
- package/dist/src/util.js +21 -0
- package/dist/src/util.js.map +1 -1
- package/dist/typedoc-urls.json +14 -0
- package/package.json +8 -8
- package/src/constants.ts +31 -0
- package/src/muxer.ts +160 -13
- package/src/private-to-private/initiate-connection.ts +7 -2
- package/src/private-to-private/transport.ts +33 -9
- package/src/private-to-public/listener.ts +4 -1
- package/src/private-to-public/transport.browser.ts +12 -1
- package/src/private-to-public/utils/connect.ts +2 -0
- package/src/private-to-public/utils/get-rtcpeerconnection.browser.ts +3 -1
- package/src/private-to-public/utils/get-rtcpeerconnection.ts +27 -14
- package/src/private-to-public/utils/stun-listener.ts +2 -7
- package/src/util.ts +29 -2
package/dist/src/constants.d.ts
CHANGED
|
@@ -28,6 +28,34 @@ export declare const MAX_BUFFERED_AMOUNT: number;
|
|
|
28
28
|
* @see https://issues.webrtc.org/issues/40644524
|
|
29
29
|
*/
|
|
30
30
|
export declare const MAX_MESSAGE_SIZE: number;
|
|
31
|
+
/**
|
|
32
|
+
* The maximum number of bytes buffered for a single incoming data channel that
|
|
33
|
+
* arrives before the muxer has been created (`earlyDataChannels` in
|
|
34
|
+
* `muxer.ts`). A well-behaved remote only puts its multistream-select proposal
|
|
35
|
+
* on an early channel (well under 1 KB): `newStream` blocks on
|
|
36
|
+
* multistream-select before the application can write, and WebRTC does not
|
|
37
|
+
* pre-negotiate the stream protocol. If the `// TODO: pre-negotiate stream
|
|
38
|
+
* protocol` in `muxer.ts` is ever implemented the application could write
|
|
39
|
+
* immediately, so this assumption, and therefore this bound, must be revisited.
|
|
40
|
+
* It is set to one maximum WebRTC message so a single legitimately-sized frame
|
|
41
|
+
* is never rejected, even though the expected payload is far smaller. Channels
|
|
42
|
+
* that exceed this are closed.
|
|
43
|
+
*/
|
|
44
|
+
export declare const MAX_EARLY_DATA_CHANNEL_BYTES: number;
|
|
45
|
+
/**
|
|
46
|
+
* Default for the `maxEarlyStreams` transport option, which caps both the data
|
|
47
|
+
* channels buffered before the muxer exists and the early streams the muxer
|
|
48
|
+
* surfaces on adoption. They are one budget - buffered channels become early
|
|
49
|
+
* streams on adoption, so a larger channel buffer would abort on hand-off.
|
|
50
|
+
*/
|
|
51
|
+
export declare const DEFAULT_MAX_EARLY_STREAMS = 10;
|
|
52
|
+
/**
|
|
53
|
+
* Max buffered messages per early data channel. A legitimate early channel
|
|
54
|
+
* carries only the multistream-select proposal (one or two frames), so this
|
|
55
|
+
* bounds a flood of tiny or empty messages that would otherwise evade the byte
|
|
56
|
+
* cap by contributing ~0 bytes each.
|
|
57
|
+
*/
|
|
58
|
+
export declare const MAX_EARLY_DATA_CHANNEL_MESSAGES = 8;
|
|
31
59
|
/**
|
|
32
60
|
* The protobuf message overhead includes the maximum amount of all bytes in the
|
|
33
61
|
* protobuf that aren't message field bytes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,UAK/B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,UAA+E,CAAA;AAE1G;;GAEG;AACH,eAAO,MAAM,YAAY,sBAAsB,CAAA;AAE/C;;GAEG;AACH,eAAO,MAAM,mBAAmB,QAAkB,CAAA;AAElD;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,QAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,UAK/B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,UAA+E,CAAA;AAE1G;;GAEG;AACH,eAAO,MAAM,YAAY,sBAAsB,CAAA;AAE/C;;GAEG;AACH,eAAO,MAAM,mBAAmB,QAAkB,CAAA;AAElD;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,QAAY,CAAA;AAEzC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,4BAA4B,QAAmB,CAAA;AAE5D;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,KAAK,CAAA;AAE3C;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,IAAI,CAAA;AAsBhD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAA8B,CAAA;AAE5D;;;GAGG;AACH,eAAO,MAAM,0BAA0B,QAAS,CAAA;AAEhD;;GAEG;AACH,eAAO,MAAM,uBAAuB,QAAS,CAAA;AAE7C;;GAEG;AACH,eAAO,MAAM,cAAc,YAAY,CAAA;AAEvC;;GAEG;AACH,eAAO,MAAM,kBAAkB,4BAA4B,CAAA;AAE3D;;GAEG;AACH,eAAO,MAAM,iCAAiC,sCAAsC,CAAA;AAEpF;;GAEG;AACH,eAAO,MAAM,oCAAoC,0CAA0C,CAAA;AAE3F;;GAEG;AACH,eAAO,MAAM,oCAAoC,UAAU,CAAA;AAE3D;;GAEG;AACH,eAAO,MAAM,4BAA4B,aAAgB,CAAA;AAEzD;;GAEG;AACH,eAAO,MAAM,qCAAqC,WAAa,CAAA"}
|
package/dist/src/constants.js
CHANGED
|
@@ -35,6 +35,34 @@ export const MAX_BUFFERED_AMOUNT = 2 * 1024 * 1024;
|
|
|
35
35
|
* @see https://issues.webrtc.org/issues/40644524
|
|
36
36
|
*/
|
|
37
37
|
export const MAX_MESSAGE_SIZE = 16 * 1024;
|
|
38
|
+
/**
|
|
39
|
+
* The maximum number of bytes buffered for a single incoming data channel that
|
|
40
|
+
* arrives before the muxer has been created (`earlyDataChannels` in
|
|
41
|
+
* `muxer.ts`). A well-behaved remote only puts its multistream-select proposal
|
|
42
|
+
* on an early channel (well under 1 KB): `newStream` blocks on
|
|
43
|
+
* multistream-select before the application can write, and WebRTC does not
|
|
44
|
+
* pre-negotiate the stream protocol. If the `// TODO: pre-negotiate stream
|
|
45
|
+
* protocol` in `muxer.ts` is ever implemented the application could write
|
|
46
|
+
* immediately, so this assumption, and therefore this bound, must be revisited.
|
|
47
|
+
* It is set to one maximum WebRTC message so a single legitimately-sized frame
|
|
48
|
+
* is never rejected, even though the expected payload is far smaller. Channels
|
|
49
|
+
* that exceed this are closed.
|
|
50
|
+
*/
|
|
51
|
+
export const MAX_EARLY_DATA_CHANNEL_BYTES = MAX_MESSAGE_SIZE;
|
|
52
|
+
/**
|
|
53
|
+
* Default for the `maxEarlyStreams` transport option, which caps both the data
|
|
54
|
+
* channels buffered before the muxer exists and the early streams the muxer
|
|
55
|
+
* surfaces on adoption. They are one budget - buffered channels become early
|
|
56
|
+
* streams on adoption, so a larger channel buffer would abort on hand-off.
|
|
57
|
+
*/
|
|
58
|
+
export const DEFAULT_MAX_EARLY_STREAMS = 10;
|
|
59
|
+
/**
|
|
60
|
+
* Max buffered messages per early data channel. A legitimate early channel
|
|
61
|
+
* carries only the multistream-select proposal (one or two frames), so this
|
|
62
|
+
* bounds a flood of tiny or empty messages that would otherwise evade the byte
|
|
63
|
+
* cap by contributing ~0 bytes each.
|
|
64
|
+
*/
|
|
65
|
+
export const MAX_EARLY_DATA_CHANNEL_MESSAGES = 8;
|
|
38
66
|
/**
|
|
39
67
|
* max protobuf overhead:
|
|
40
68
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAE3D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,8BAA8B;IAC9B,kCAAkC;IAClC,+BAA+B;IAC/B,qCAAqC;CACtC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAA;AAE1G;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,mBAAmB,CAAA;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AAElD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAA;AAEzC;;;;;;GAMG;AACH,SAAS,yBAAyB,CAAE,cAAc,GAAG,gBAAgB;IACnE,0BAA0B;IAC1B,MAAM,aAAa,GAAG,cAAc,CAAC,cAAc,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC,CAAA;IACrF,MAAM,SAAS,GAAG,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA,CAAC,gBAAgB;IAC3F,MAAM,kBAAkB,GAAG,CAAC,CAAA,CAAC,UAAU;IACvC,MAAM,SAAS,GAAG,cAAc,GAAG,aAAa,GAAG,SAAS,GAAG,kBAAkB,CAAA;IAEjF,+DAA+D;IAC/D,MAAM,wBAAwB,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;IAE1D,OAAO,aAAa,GAAG,SAAS,GAAG,kBAAkB,GAAG,wBAAwB,CAAA;AAClF,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,yBAAyB,EAAE,CAAA;AAE5D;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAA;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAA;AAE7C;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAA;AAEvC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,yBAAyB,CAAA;AAE3D;;GAEG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,mCAAmC,CAAA;AAEpF;;GAEG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,uCAAuC,CAAA;AAE3F;;GAEG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,OAAO,CAAA;AAE3D;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,aAAa,CAAA;AAEzD;;GAEG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,UAAU,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAE3D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,8BAA8B;IAC9B,kCAAkC;IAClC,+BAA+B;IAC/B,qCAAqC;CACtC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAA;AAE1G;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,mBAAmB,CAAA;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AAElD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAA;AAEzC;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,gBAAgB,CAAA;AAE5D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAA;AAE3C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAA;AAEhD;;;;;;GAMG;AACH,SAAS,yBAAyB,CAAE,cAAc,GAAG,gBAAgB;IACnE,0BAA0B;IAC1B,MAAM,aAAa,GAAG,cAAc,CAAC,cAAc,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC,CAAA;IACrF,MAAM,SAAS,GAAG,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA,CAAC,gBAAgB;IAC3F,MAAM,kBAAkB,GAAG,CAAC,CAAA,CAAC,UAAU;IACvC,MAAM,SAAS,GAAG,cAAc,GAAG,aAAa,GAAG,SAAS,GAAG,kBAAkB,CAAA;IAEjF,+DAA+D;IAC/D,MAAM,wBAAwB,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;IAE1D,OAAO,aAAa,GAAG,SAAS,GAAG,kBAAkB,GAAG,wBAAwB,CAAA;AAClF,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,yBAAyB,EAAE,CAAA;AAE5D;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAA;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAA;AAE7C;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAA;AAEvC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,yBAAyB,CAAA;AAE3D;;GAEG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,mCAAmC,CAAA;AAEpF;;GAEG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,uCAAuC,CAAA;AAE3F;;GAEG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,OAAO,CAAA;AAE3D;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,aAAa,CAAA;AAEzD;;GAEG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,UAAU,CAAA"}
|
package/dist/src/muxer.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AbstractStreamMuxer } from '@libp2p/utils';
|
|
2
2
|
import { WebRTCStream } from './stream.ts';
|
|
3
3
|
import type { DataChannelOptions } from './index.ts';
|
|
4
|
-
import type { ComponentLogger, CounterGroup, StreamMuxer, StreamMuxerFactory, CreateStreamOptions, MultiaddrConnection } from '@libp2p/interface';
|
|
4
|
+
import type { ComponentLogger, CounterGroup, Logger, StreamMuxer, StreamMuxerFactory, CreateStreamOptions, MultiaddrConnection } from '@libp2p/interface';
|
|
5
5
|
export interface DataChannelMuxerFactoryInit {
|
|
6
6
|
/**
|
|
7
7
|
* WebRTC Peer Connection
|
|
@@ -15,6 +15,16 @@ export interface DataChannelMuxerFactoryInit {
|
|
|
15
15
|
* Optional metrics for this data channel muxer
|
|
16
16
|
*/
|
|
17
17
|
metrics?: CounterGroup;
|
|
18
|
+
/**
|
|
19
|
+
* Optional logger, used to report early data channels that are dropped or
|
|
20
|
+
* rejected, and best-effort close errors
|
|
21
|
+
*/
|
|
22
|
+
log?: Logger;
|
|
23
|
+
/**
|
|
24
|
+
* Caps the early data channel buffer and the muxer's early streams from one
|
|
25
|
+
* value (see `DEFAULT_MAX_EARLY_STREAMS`)
|
|
26
|
+
*/
|
|
27
|
+
maxEarlyStreams?: number;
|
|
18
28
|
/**
|
|
19
29
|
* Options used to create data channels
|
|
20
30
|
*/
|
|
@@ -23,6 +33,15 @@ export interface DataChannelMuxerFactoryInit {
|
|
|
23
33
|
export interface DataChannelMuxerFactoryComponents {
|
|
24
34
|
logger: ComponentLogger;
|
|
25
35
|
}
|
|
36
|
+
interface EarlyDataChannel {
|
|
37
|
+
channel: RTCDataChannel;
|
|
38
|
+
/**
|
|
39
|
+
* Messages buffered before the muxer adopted the channel; without these they
|
|
40
|
+
* would be dropped, since the stream's `message` listener is only attached
|
|
41
|
+
* when the muxer is created
|
|
42
|
+
*/
|
|
43
|
+
messages: Array<MessageEvent<ArrayBuffer>>;
|
|
44
|
+
}
|
|
26
45
|
export declare class DataChannelMuxerFactory implements StreamMuxerFactory {
|
|
27
46
|
readonly protocol: string;
|
|
28
47
|
/**
|
|
@@ -30,19 +49,31 @@ export declare class DataChannelMuxerFactory implements StreamMuxerFactory {
|
|
|
30
49
|
*/
|
|
31
50
|
private readonly peerConnection;
|
|
32
51
|
private readonly metrics?;
|
|
52
|
+
private readonly log?;
|
|
33
53
|
private readonly dataChannelOptions?;
|
|
54
|
+
private readonly maxEarlyStreams;
|
|
34
55
|
private readonly earlyDataChannels;
|
|
56
|
+
private handedOff;
|
|
35
57
|
constructor(init: DataChannelMuxerFactoryInit);
|
|
36
58
|
private onEarlyDataChannel;
|
|
59
|
+
private closeEarlyDataChannel;
|
|
37
60
|
createStreamMuxer(maConn: MultiaddrConnection): StreamMuxer;
|
|
61
|
+
/**
|
|
62
|
+
* Discards any early data channels buffered before the muxer was created and
|
|
63
|
+
* detaches the `datachannel` listener. Called by the transport whenever
|
|
64
|
+
* connection establishment fails; it is a no-op once `createStreamMuxer` has
|
|
65
|
+
* handed the channels to the muxer, and otherwise ensures a peer whose
|
|
66
|
+
* connection is rejected cannot leave buffered data or listeners behind.
|
|
67
|
+
*/
|
|
68
|
+
close(): void;
|
|
38
69
|
}
|
|
39
70
|
export interface DataChannelMuxerInit extends DataChannelMuxerFactoryInit {
|
|
40
71
|
protocol: string;
|
|
41
72
|
/**
|
|
42
|
-
* Incoming data channels
|
|
43
|
-
*
|
|
73
|
+
* Incoming data channels opened by the remote before the muxer was created,
|
|
74
|
+
* along with the messages that arrived on them in that window
|
|
44
75
|
*/
|
|
45
|
-
earlyDataChannels:
|
|
76
|
+
earlyDataChannels: EarlyDataChannel[];
|
|
46
77
|
}
|
|
47
78
|
export interface DataChannelMuxerComponents {
|
|
48
79
|
logger: ComponentLogger;
|
|
@@ -58,4 +89,5 @@ export declare class DataChannelMuxer extends AbstractStreamMuxer<WebRTCStream>
|
|
|
58
89
|
onCreateStream(options?: CreateStreamOptions): Promise<WebRTCStream>;
|
|
59
90
|
onData(): void;
|
|
60
91
|
}
|
|
92
|
+
export {};
|
|
61
93
|
//# sourceMappingURL=muxer.d.ts.map
|
package/dist/src/muxer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"muxer.d.ts","sourceRoot":"","sources":["../../src/muxer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAEnD,OAAO,EAAgB,YAAY,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"muxer.d.ts","sourceRoot":"","sources":["../../src/muxer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAEnD,OAAO,EAAgB,YAAY,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAEzJ,MAAM,WAAW,2BAA2B;IAC1C;;OAEG;IACH,cAAc,EAAE,iBAAiB,CAAA;IAEjC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,YAAY,CAAA;IAEtB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IAEZ;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;CACxC;AAED,MAAM,WAAW,iCAAiC;IAChD,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,cAAc,CAAA;IAEvB;;;;OAIG;IACH,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAA;CAC3C;AA0BD,qBAAa,uBAAwB,YAAW,kBAAkB;IAChE,SAAgB,QAAQ,EAAE,MAAM,CAAA;IAEhC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmB;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAc;IACvC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAoB;IACxD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IACtD,OAAO,CAAC,SAAS,CAAQ;gBAEZ,IAAI,EAAE,2BAA2B;IAa9C,OAAO,CAAC,kBAAkB;IAiD1B,OAAO,CAAC,qBAAqB;IAY7B,iBAAiB,CAAE,MAAM,EAAE,mBAAmB,GAAG,WAAW;IAgB5D;;;;;;OAMG;IACH,KAAK,IAAK,IAAI;CAaf;AAED,MAAM,WAAW,oBAAqB,SAAQ,2BAA2B;IACvE,QAAQ,EAAE,MAAM,CAAA;IAEhB;;;OAGG;IACH,iBAAiB,EAAE,gBAAgB,EAAE,CAAA;CACtC;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,eAAe,CAAA;CACxB;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,mBAAmB,CAAC,YAAY,CAAE,YAAW,WAAW,CAAC,YAAY,CAAC;IAC1G,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmB;IAClD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;gBAE1C,MAAM,EAAE,mBAAmB,EAAE,IAAI,EAAE,oBAAoB;IAwCpE,OAAO,CAAC,aAAa;IA8Bf,cAAc,CAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC;IAoB3E,MAAM,IAAK,IAAI;CAGhB"}
|
package/dist/src/muxer.js
CHANGED
|
@@ -1,6 +1,29 @@
|
|
|
1
1
|
import { AbstractStreamMuxer } from '@libp2p/utils';
|
|
2
|
-
import { MUXER_PROTOCOL } from "./constants.js";
|
|
2
|
+
import { DEFAULT_MAX_EARLY_STREAMS, MAX_EARLY_DATA_CHANNEL_BYTES, MAX_EARLY_DATA_CHANNEL_MESSAGES, MUXER_PROTOCOL } from "./constants.js";
|
|
3
3
|
import { createStream, WebRTCStream } from "./stream.js";
|
|
4
|
+
/**
|
|
5
|
+
* Close a data channel. Closing is best-effort and wrapped so a synchronous
|
|
6
|
+
* throw from an already-closed or stale channel cannot escape and abort
|
|
7
|
+
* disposal of the remaining early channels.
|
|
8
|
+
*/
|
|
9
|
+
function closeChannel(channel, log) {
|
|
10
|
+
try {
|
|
11
|
+
channel.close();
|
|
12
|
+
}
|
|
13
|
+
catch (err) {
|
|
14
|
+
log?.trace('error closing early data channel - %e', err);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Detach the buffering handler, release the buffered messages and close the
|
|
19
|
+
* channel. Used both when disposing a single over-limit channel and when
|
|
20
|
+
* discarding the whole early buffer.
|
|
21
|
+
*/
|
|
22
|
+
function disposeEarlyDataChannel(early, log) {
|
|
23
|
+
early.channel.onmessage = null;
|
|
24
|
+
early.messages.length = 0;
|
|
25
|
+
closeChannel(early.channel, log);
|
|
26
|
+
}
|
|
4
27
|
export class DataChannelMuxerFactory {
|
|
5
28
|
protocol;
|
|
6
29
|
/**
|
|
@@ -8,30 +31,101 @@ export class DataChannelMuxerFactory {
|
|
|
8
31
|
*/
|
|
9
32
|
peerConnection;
|
|
10
33
|
metrics;
|
|
34
|
+
log;
|
|
11
35
|
dataChannelOptions;
|
|
36
|
+
maxEarlyStreams;
|
|
12
37
|
earlyDataChannels;
|
|
38
|
+
handedOff = false;
|
|
13
39
|
constructor(init) {
|
|
14
40
|
this.onEarlyDataChannel = this.onEarlyDataChannel.bind(this);
|
|
15
41
|
this.peerConnection = init.peerConnection;
|
|
16
42
|
this.metrics = init.metrics;
|
|
43
|
+
this.log = init.log;
|
|
17
44
|
this.protocol = init.protocol ?? MUXER_PROTOCOL;
|
|
18
45
|
this.dataChannelOptions = init.dataChannelOptions ?? {};
|
|
46
|
+
this.maxEarlyStreams = init.maxEarlyStreams ?? DEFAULT_MAX_EARLY_STREAMS;
|
|
19
47
|
this.peerConnection.addEventListener('datachannel', this.onEarlyDataChannel);
|
|
20
48
|
this.earlyDataChannels = [];
|
|
21
49
|
}
|
|
22
50
|
onEarlyDataChannel(evt) {
|
|
23
|
-
|
|
51
|
+
const channel = evt.channel;
|
|
52
|
+
// reject (don't buffer) channels beyond the count cap, keeping the connection
|
|
53
|
+
if (this.earlyDataChannels.length >= this.maxEarlyStreams) {
|
|
54
|
+
this.log?.('rejecting early data channel %d - too many early channels', channel.id);
|
|
55
|
+
this.metrics?.increment({ early_data_channel_count_exceeded: true });
|
|
56
|
+
closeChannel(channel, this.log);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
// deliver binary as ArrayBuffer so it can be sized and replayed to the stream
|
|
60
|
+
channel.binaryType = 'arraybuffer';
|
|
61
|
+
const early = {
|
|
62
|
+
channel,
|
|
63
|
+
messages: []
|
|
64
|
+
};
|
|
65
|
+
// buffer until the muxer adopts the channel, bounded so a remote cannot hold
|
|
66
|
+
// unbounded data pre-admission. Must stay on `.onmessage` so `createStream`
|
|
67
|
+
// can overwrite it on adoption (see stream.ts)
|
|
68
|
+
channel.onmessage = (messageEvent) => {
|
|
69
|
+
const { data } = messageEvent;
|
|
70
|
+
// text frames arrive as strings despite binaryType - can't size them, reject
|
|
71
|
+
if (!(data instanceof ArrayBuffer)) {
|
|
72
|
+
this.closeEarlyDataChannel(early, 'invalid_message');
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
// cap count too, else a flood of ~0-byte messages evades the byte cap
|
|
76
|
+
if (early.messages.length >= MAX_EARLY_DATA_CHANNEL_MESSAGES) {
|
|
77
|
+
this.closeEarlyDataChannel(early, 'message_count_exceeded');
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
const buffered = early.messages.reduce((total, m) => total + m.data.byteLength, 0);
|
|
81
|
+
if (buffered + data.byteLength > MAX_EARLY_DATA_CHANNEL_BYTES) {
|
|
82
|
+
this.closeEarlyDataChannel(early, 'byte_count_exceeded');
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
early.messages.push(messageEvent);
|
|
86
|
+
};
|
|
87
|
+
this.earlyDataChannels.push(early);
|
|
88
|
+
}
|
|
89
|
+
closeEarlyDataChannel(early, reason) {
|
|
90
|
+
this.log?.('closing early data channel %d - %s', early.channel.id, reason);
|
|
91
|
+
this.metrics?.increment({ [`early_data_channel_${reason}`]: true });
|
|
92
|
+
disposeEarlyDataChannel(early, this.log);
|
|
93
|
+
const index = this.earlyDataChannels.indexOf(early);
|
|
94
|
+
if (index !== -1) {
|
|
95
|
+
this.earlyDataChannels.splice(index, 1);
|
|
96
|
+
}
|
|
24
97
|
}
|
|
25
98
|
createStreamMuxer(maConn) {
|
|
99
|
+
// ownership of the buffered early channels transfers to the muxer, so a
|
|
100
|
+
// later `close()` from the transport must not dispose them
|
|
101
|
+
this.handedOff = true;
|
|
26
102
|
this.peerConnection.removeEventListener('datachannel', this.onEarlyDataChannel);
|
|
27
103
|
return new DataChannelMuxer(maConn, {
|
|
28
104
|
peerConnection: this.peerConnection,
|
|
29
105
|
dataChannelOptions: this.dataChannelOptions,
|
|
30
106
|
metrics: this.metrics,
|
|
31
107
|
protocol: this.protocol,
|
|
108
|
+
maxEarlyStreams: this.maxEarlyStreams,
|
|
32
109
|
earlyDataChannels: this.earlyDataChannels
|
|
33
110
|
});
|
|
34
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* Discards any early data channels buffered before the muxer was created and
|
|
114
|
+
* detaches the `datachannel` listener. Called by the transport whenever
|
|
115
|
+
* connection establishment fails; it is a no-op once `createStreamMuxer` has
|
|
116
|
+
* handed the channels to the muxer, and otherwise ensures a peer whose
|
|
117
|
+
* connection is rejected cannot leave buffered data or listeners behind.
|
|
118
|
+
*/
|
|
119
|
+
close() {
|
|
120
|
+
if (this.handedOff) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
this.peerConnection.removeEventListener('datachannel', this.onEarlyDataChannel);
|
|
124
|
+
for (const early of this.earlyDataChannels) {
|
|
125
|
+
disposeEarlyDataChannel(early, this.log);
|
|
126
|
+
}
|
|
127
|
+
this.earlyDataChannels.length = 0;
|
|
128
|
+
}
|
|
35
129
|
}
|
|
36
130
|
/**
|
|
37
131
|
* A libp2p data channel stream muxer
|
|
@@ -58,23 +152,30 @@ export class DataChannelMuxer extends AbstractStreamMuxer {
|
|
|
58
152
|
};
|
|
59
153
|
queueMicrotask(() => {
|
|
60
154
|
if (this.status !== 'open') {
|
|
61
|
-
|
|
62
|
-
|
|
155
|
+
// the connection was torn down before we could adopt these channels -
|
|
156
|
+
// detach the buffer, release it, and close the channel
|
|
157
|
+
init.earlyDataChannels.forEach((early) => {
|
|
158
|
+
disposeEarlyDataChannel(early, this.log);
|
|
63
159
|
});
|
|
64
160
|
return;
|
|
65
161
|
}
|
|
66
|
-
init.earlyDataChannels.forEach(channel => {
|
|
67
|
-
|
|
162
|
+
init.earlyDataChannels.forEach(({ channel, messages }) => {
|
|
163
|
+
try {
|
|
164
|
+
this.onDataChannel(channel, messages);
|
|
165
|
+
}
|
|
166
|
+
catch (err) {
|
|
167
|
+
this.log.error('error adopting early data channel %d - %e', channel.id, err);
|
|
168
|
+
}
|
|
68
169
|
});
|
|
69
170
|
});
|
|
70
171
|
}
|
|
71
|
-
onDataChannel(channel) {
|
|
172
|
+
onDataChannel(channel, earlyMessages) {
|
|
72
173
|
this.log('incoming datachannel with channel id %d, protocol %s and status %s', channel.id, channel.protocol, channel.readyState);
|
|
73
174
|
// 'init' channel is only used during connection establishment, it is
|
|
74
175
|
// closed by the initiator
|
|
75
176
|
if (channel.label === 'init') {
|
|
76
177
|
this.log.trace('closing init channel %d', channel.id);
|
|
77
|
-
channel.
|
|
178
|
+
closeChannel(channel, this.log);
|
|
78
179
|
return;
|
|
79
180
|
}
|
|
80
181
|
const stream = createStream({
|
|
@@ -84,6 +185,12 @@ export class DataChannelMuxer extends AbstractStreamMuxer {
|
|
|
84
185
|
direction: 'inbound',
|
|
85
186
|
log: this.log
|
|
86
187
|
});
|
|
188
|
+
// replay any messages that arrived before the muxer was created - the
|
|
189
|
+
// stream has just attached its `message` handler so this preserves
|
|
190
|
+
// ordering with any messages that arrive later
|
|
191
|
+
earlyMessages?.forEach(messageEvent => {
|
|
192
|
+
channel.onmessage?.(messageEvent);
|
|
193
|
+
});
|
|
87
194
|
this.onRemoteStream(stream);
|
|
88
195
|
}
|
|
89
196
|
async onCreateStream(options) {
|
package/dist/src/muxer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"muxer.js","sourceRoot":"","sources":["../../src/muxer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"muxer.js","sourceRoot":"","sources":["../../src/muxer.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ export interface IncomingStreamOptions extends AbortOptions {
|
|
|
12
12
|
export interface ConnectOptions extends LoggerOptions, ProgressOptions<WebRTCDialEvents> {
|
|
13
13
|
rtcConfiguration?: RTCConfiguration;
|
|
14
14
|
dataChannel?: DataChannelOptions;
|
|
15
|
+
maxEarlyStreams?: number;
|
|
15
16
|
multiaddr: Multiaddr;
|
|
16
17
|
connectionManager: ConnectionManager;
|
|
17
18
|
transportManager: TransportManager;
|
|
@@ -20,7 +21,7 @@ export interface ConnectOptions extends LoggerOptions, ProgressOptions<WebRTCDia
|
|
|
20
21
|
metrics?: WebRTCTransportMetrics;
|
|
21
22
|
logger: ComponentLogger;
|
|
22
23
|
}
|
|
23
|
-
export declare function initiateConnection({ rtcConfiguration, dataChannel, signal, metrics, multiaddr: ma, connectionManager, transportManager, log, logger, onProgress }: ConnectOptions): Promise<{
|
|
24
|
+
export declare function initiateConnection({ rtcConfiguration, dataChannel, maxEarlyStreams, signal, metrics, multiaddr: ma, connectionManager, transportManager, log, logger, onProgress }: ConnectOptions): Promise<{
|
|
24
25
|
remoteAddress: Multiaddr;
|
|
25
26
|
peerConnection: globalThis.RTCPeerConnection;
|
|
26
27
|
muxerFactory: DataChannelMuxerFactory;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initiate-connection.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/initiate-connection.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAKrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAc,eAAe,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACjG,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AACrF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,MAAM,WAAW,qBAAsB,SAAQ,YAAY;IACzD,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,kBAAkB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;CACjD;AAED,MAAM,WAAW,cAAe,SAAQ,aAAa,EAAE,eAAe,CAAC,gBAAgB,CAAC;IACtF,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAChC,SAAS,EAAE,SAAS,CAAA;IACpB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,kBAAkB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAChD,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,OAAO,CAAC,EAAE,sBAAsB,CAAA;IAChC,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,wBAAsB,kBAAkB,CAAE,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC;IAAE,aAAa,EAAE,SAAS,CAAC;IAAC,cAAc,EAAE,UAAU,CAAC,iBAAiB,CAAC;IAAC,YAAY,EAAE,uBAAuB,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"initiate-connection.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/initiate-connection.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAKrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAc,eAAe,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACjG,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AACrF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,MAAM,WAAW,qBAAsB,SAAQ,YAAY;IACzD,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,kBAAkB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;CACjD;AAED,MAAM,WAAW,cAAe,SAAQ,aAAa,EAAE,eAAe,CAAC,gBAAgB,CAAC;IACtF,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAChC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,SAAS,CAAA;IACpB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,kBAAkB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAChD,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,OAAO,CAAC,EAAE,sBAAsB,CAAA;IAChC,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,wBAAsB,kBAAkB,CAAE,EAAE,gBAAgB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC;IAAE,aAAa,EAAE,SAAS,CAAC;IAAC,cAAc,EAAE,UAAU,CAAC,iBAAiB,CAAC;IAAC,YAAY,EAAE,uBAAuB,CAAA;CAAE,CAAC,CAmMtU"}
|
|
@@ -8,7 +8,7 @@ import { RTCPeerConnection, RTCSessionDescription } from "../webrtc/index.js";
|
|
|
8
8
|
import { Message } from "./pb/message.js";
|
|
9
9
|
import { splitAddr } from "./transport.js";
|
|
10
10
|
import { readCandidatesUntilConnected } from "./util.js";
|
|
11
|
-
export async function initiateConnection({ rtcConfiguration, dataChannel, signal, metrics, multiaddr: ma, connectionManager, transportManager, log, logger, onProgress }) {
|
|
11
|
+
export async function initiateConnection({ rtcConfiguration, dataChannel, maxEarlyStreams, signal, metrics, multiaddr: ma, connectionManager, transportManager, log, logger, onProgress }) {
|
|
12
12
|
const { circuitAddress, targetPeer } = splitAddr(ma);
|
|
13
13
|
metrics?.dialerEvents.increment({ open: true });
|
|
14
14
|
log.trace('dialing circuit address: %a', circuitAddress);
|
|
@@ -49,7 +49,10 @@ export async function initiateConnection({ rtcConfiguration, dataChannel, signal
|
|
|
49
49
|
const muxerFactory = new DataChannelMuxerFactory({
|
|
50
50
|
// @ts-expect-error https://github.com/murat-dogan/node-datachannel/pull/370
|
|
51
51
|
peerConnection,
|
|
52
|
-
dataChannelOptions: dataChannel
|
|
52
|
+
dataChannelOptions: dataChannel,
|
|
53
|
+
maxEarlyStreams,
|
|
54
|
+
metrics: metrics?.dialerEvents,
|
|
55
|
+
log
|
|
53
56
|
});
|
|
54
57
|
try {
|
|
55
58
|
// we create the channel so that the RTCPeerConnection has a component for
|
|
@@ -154,6 +157,7 @@ export async function initiateConnection({ rtcConfiguration, dataChannel, signal
|
|
|
154
157
|
}
|
|
155
158
|
catch (err) {
|
|
156
159
|
log.error('outgoing signaling error - %e', err);
|
|
160
|
+
muxerFactory.close();
|
|
157
161
|
peerConnection.close();
|
|
158
162
|
stream.abort(err);
|
|
159
163
|
throw err;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initiate-connection.js","sourceRoot":"","sources":["../../../src/private-to-private/initiate-connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,4BAA4B,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"initiate-connection.js","sourceRoot":"","sources":["../../../src/private-to-private/initiate-connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,13 @@ export interface WebRTCTransportInit {
|
|
|
16
16
|
* Any options here will be applied to any RTCDataChannels that are opened.
|
|
17
17
|
*/
|
|
18
18
|
dataChannel?: DataChannelOptions;
|
|
19
|
+
/**
|
|
20
|
+
* Caps the inbound streams accepted before the connection surfaces them, and
|
|
21
|
+
* the data channels buffered before the muxer exists (excess are closed).
|
|
22
|
+
*
|
|
23
|
+
* @default 10
|
|
24
|
+
*/
|
|
25
|
+
maxEarlyStreams?: number;
|
|
19
26
|
}
|
|
20
27
|
export interface WebRTCTransportComponents {
|
|
21
28
|
peerId: PeerId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,mBAAmB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAcrH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,EAAE,+BAA+B,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAU,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,4BAA4B,EAAE,YAAY,EAAuB,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC5S,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAChG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAEpD,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAE1F;;OAEG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -99,11 +99,13 @@ export class WebRTCTransport {
|
|
|
99
99
|
const { remoteAddress, peerConnection, muxerFactory } = await initiateConnection({
|
|
100
100
|
rtcConfiguration: await getRtcConfiguration(this.init.rtcConfiguration),
|
|
101
101
|
dataChannel: this.init.dataChannel,
|
|
102
|
+
maxEarlyStreams: this.init.maxEarlyStreams,
|
|
102
103
|
multiaddr: ma,
|
|
103
104
|
dataChannelOptions: this.init.dataChannel,
|
|
104
105
|
signal: options.signal,
|
|
105
106
|
connectionManager: this.components.connectionManager,
|
|
106
107
|
transportManager: this.components.transportManager,
|
|
108
|
+
metrics: this.metrics,
|
|
107
109
|
log: this.log,
|
|
108
110
|
logger: this.components.logger,
|
|
109
111
|
onProgress: options.onProgress
|
|
@@ -115,14 +117,24 @@ export class WebRTCTransport {
|
|
|
115
117
|
direction: 'outbound',
|
|
116
118
|
log: this.components.logger.forComponent('libp2p:webrtc:connection')
|
|
117
119
|
});
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
120
|
+
let connection;
|
|
121
|
+
try {
|
|
122
|
+
connection = await options.upgrader.upgradeOutbound(webRTCConn, {
|
|
123
|
+
skipProtection: true,
|
|
124
|
+
skipEncryption: true,
|
|
125
|
+
remotePeer: getRemotePeer(ma),
|
|
126
|
+
muxerFactory,
|
|
127
|
+
onProgress: options.onProgress,
|
|
128
|
+
signal: options.signal
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
catch (err) {
|
|
132
|
+
// discard any early data channels buffered before the upgrade failed and
|
|
133
|
+
// close the peer connection
|
|
134
|
+
muxerFactory.close();
|
|
135
|
+
peerConnection.close();
|
|
136
|
+
throw err;
|
|
137
|
+
}
|
|
126
138
|
// close the connection on shut down
|
|
127
139
|
this._closeOnShutdown(peerConnection, webRTCConn);
|
|
128
140
|
return connection;
|
|
@@ -143,7 +155,10 @@ export class WebRTCTransport {
|
|
|
143
155
|
const muxerFactory = new DataChannelMuxerFactory({
|
|
144
156
|
// @ts-expect-error https://github.com/murat-dogan/node-datachannel/pull/370
|
|
145
157
|
peerConnection,
|
|
146
|
-
dataChannelOptions: this.init.dataChannel
|
|
158
|
+
dataChannelOptions: this.init.dataChannel,
|
|
159
|
+
maxEarlyStreams: this.init.maxEarlyStreams,
|
|
160
|
+
metrics: this.metrics?.listenerEvents,
|
|
161
|
+
log: this.log
|
|
147
162
|
});
|
|
148
163
|
try {
|
|
149
164
|
const { remoteAddress, remotePeer } = await handleIncomingStream(stream, connection, {
|
|
@@ -176,6 +191,7 @@ export class WebRTCTransport {
|
|
|
176
191
|
}
|
|
177
192
|
catch (err) {
|
|
178
193
|
this.log.error('incoming signaling error - %e', err);
|
|
194
|
+
muxerFactory.close();
|
|
179
195
|
peerConnection.close();
|
|
180
196
|
stream.abort(err);
|
|
181
197
|
throw err;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/private-to-private/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACrH,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/private-to-private/transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,7 @@ export interface WebRTCDirectListenerInit {
|
|
|
20
20
|
upgrader: Upgrader;
|
|
21
21
|
certificate: TransportCertificate;
|
|
22
22
|
maxInboundStreams?: number;
|
|
23
|
+
maxEarlyStreams?: number;
|
|
23
24
|
dataChannel?: DataChannelOptions;
|
|
24
25
|
rtcConfiguration?: RTCConfiguration | (() => RTCConfiguration | Promise<RTCConfiguration>);
|
|
25
26
|
emitter: TypedEventTarget<WebRTCDirectTransportCertificateEvents>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../../src/private-to-public/listener.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,YAAY,CAAA;AAK/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAC3E,OAAO,KAAK,EAAE,sCAAsC,EAAE,MAAM,gBAAgB,CAAA;AAG5E,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAU,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC/I,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,eAAe,CAAA;IACvB,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,YAAY,CAAA;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,QAAQ,CAAA;IAClB,WAAW,EAAE,oBAAoB,CAAA;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAChC,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAC1F,OAAO,EAAE,gBAAgB,CAAC,sCAAsC,CAAC,CAAA;CAClE;AAED,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,YAAY,CAAA;CAC7B;AAaD,qBAAa,oBAAqB,SAAQ,iBAAiB,CAAC,cAAc,CAAE,YAAW,QAAQ;IAC7F,OAAO,CAAC,kBAAkB,CAAC,CAAW;IACtC,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,UAAU,CAAC,CAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsC;IAClE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0B;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgC;IAC3D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAuB;IAChD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiB;gBAEvC,UAAU,EAAE,8BAA8B,EAAE,IAAI,EAAE,wBAAwB;IA4BjF,MAAM,CAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA6C3C,OAAO,CAAC,iBAAiB;YAgCX,kBAAkB;
|
|
1
|
+
{"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../../src/private-to-public/listener.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,YAAY,CAAA;AAK/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAC3E,OAAO,KAAK,EAAE,sCAAsC,EAAE,MAAM,gBAAgB,CAAA;AAG5E,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAU,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC/I,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,eAAe,CAAA;IACvB,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,YAAY,CAAA;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,QAAQ,CAAA;IAClB,WAAW,EAAE,oBAAoB,CAAA;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAChC,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAC1F,OAAO,EAAE,gBAAgB,CAAC,sCAAsC,CAAC,CAAA;CAClE;AAED,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,YAAY,CAAA;CAC7B;AAaD,qBAAa,oBAAqB,SAAQ,iBAAiB,CAAC,cAAc,CAAE,YAAW,QAAQ;IAC7F,OAAO,CAAC,kBAAkB,CAAC,CAAW;IACtC,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,UAAU,CAAC,CAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsC;IAClE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0B;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgC;IAC3D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAuB;IAChD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiB;gBAEvC,UAAU,EAAE,8BAA8B,EAAE,IAAI,EAAE,wBAAwB;IA4BjF,MAAM,CAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA6C3C,OAAO,CAAC,iBAAiB;YAgCX,kBAAkB;IA0DhC,QAAQ,IAAK,SAAS,EAAE;IAYxB,mBAAmB,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI;IAgC7C,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;CA8B9B"}
|