@libp2p/webrtc 6.0.2-334f91bdc → 6.0.2-39e2e541a
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/muxer.d.ts +0 -8
- package/dist/src/muxer.d.ts.map +1 -1
- package/dist/src/muxer.js +15 -38
- 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 +4 -5
- package/dist/src/private-to-private/initiate-connection.js.map +1 -1
- package/dist/src/private-to-private/signaling-stream-handler.js +4 -4
- package/dist/src/private-to-private/signaling-stream-handler.js.map +1 -1
- package/dist/src/private-to-private/transport.d.ts.map +1 -1
- package/dist/src/private-to-private/transport.js +3 -5
- package/dist/src/private-to-private/transport.js.map +1 -1
- package/dist/src/private-to-public/listener.d.ts +0 -1
- package/dist/src/private-to-public/listener.d.ts.map +1 -1
- package/dist/src/private-to-public/listener.js +4 -9
- package/dist/src/private-to-public/listener.js.map +1 -1
- package/dist/src/private-to-public/transport.d.ts.map +1 -1
- package/dist/src/private-to-public/transport.js +3 -5
- package/dist/src/private-to-public/transport.js.map +1 -1
- package/dist/src/private-to-public/utils/connect.d.ts +4 -4
- package/dist/src/private-to-public/utils/connect.d.ts.map +1 -1
- package/dist/src/private-to-public/utils/connect.js +9 -7
- package/dist/src/private-to-public/utils/connect.js.map +1 -1
- package/dist/src/private-to-public/utils/get-rtcpeerconnection.browser.d.ts +1 -6
- 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 -15
- 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 +2 -17
- package/dist/src/private-to-public/utils/get-rtcpeerconnection.d.ts.map +1 -1
- package/dist/src/private-to-public/utils/get-rtcpeerconnection.js +7 -18
- package/dist/src/private-to-public/utils/get-rtcpeerconnection.js.map +1 -1
- package/dist/src/rtcpeerconnection-to-conn.d.ts +1 -0
- package/dist/src/rtcpeerconnection-to-conn.d.ts.map +1 -1
- package/dist/src/rtcpeerconnection-to-conn.js.map +1 -1
- package/dist/src/stream.d.ts.map +1 -1
- package/dist/src/stream.js +17 -25
- package/dist/src/stream.js.map +1 -1
- package/dist/src/util.js +1 -1
- package/dist/src/util.js.map +1 -1
- package/package.json +8 -8
- package/src/muxer.ts +15 -50
- package/src/private-to-private/initiate-connection.ts +5 -6
- package/src/private-to-private/signaling-stream-handler.ts +4 -4
- package/src/private-to-private/transport.ts +4 -6
- package/src/private-to-public/listener.ts +4 -10
- package/src/private-to-public/transport.ts +3 -8
- package/src/private-to-public/utils/connect.ts +14 -11
- package/src/private-to-public/utils/get-rtcpeerconnection.browser.ts +3 -20
- package/src/private-to-public/utils/get-rtcpeerconnection.ts +8 -31
- package/src/rtcpeerconnection-to-conn.ts +1 -0
- package/src/stream.ts +18 -26
- package/src/util.ts +1 -1
@@ -8,10 +8,7 @@ import { isFirefox } from '../../util.js';
|
|
8
8
|
import { generateNoisePrologue } from './generate-noise-prologue.js';
|
9
9
|
import * as sdp from './sdp.js';
|
10
10
|
const CONNECTION_STATE_CHANGE_EVENT = isFirefox ? 'iceconnectionstatechange' : 'connectionstatechange';
|
11
|
-
function
|
12
|
-
return options.role === 'server';
|
13
|
-
}
|
14
|
-
export async function connect(peerConnection, muxerFactory, ufrag, options) {
|
11
|
+
export async function connect(peerConnection, ufrag, options) {
|
15
12
|
// create data channel for running the noise handshake. Once the data
|
16
13
|
// channel is opened, the listener will initiate the noise handshake. This
|
17
14
|
// is used to confirm the identity of the peer.
|
@@ -54,7 +51,7 @@ export async function connect(peerConnection, muxerFactory, ufrag, options) {
|
|
54
51
|
await pEvent(handshakeDataChannel, 'open', options);
|
55
52
|
}
|
56
53
|
options.log.trace('%s handshake channel opened', options.role);
|
57
|
-
if (
|
54
|
+
if (options.role === 'server') {
|
58
55
|
// now that the connection has been opened, add the remote's certhash to
|
59
56
|
// it's multiaddr so we can complete the noise handshake
|
60
57
|
const remoteFingerprint = peerConnection.remoteFingerprint()?.value ?? '';
|
@@ -84,7 +81,6 @@ export async function connect(peerConnection, muxerFactory, ufrag, options) {
|
|
84
81
|
// Creating the connection before completion of the noise
|
85
82
|
// handshake ensures that the stream opening callback is set up
|
86
83
|
const maConn = toMultiaddrConnection({
|
87
|
-
// @ts-expect-error types are broken
|
88
84
|
peerConnection,
|
89
85
|
remoteAddr: options.remoteAddr,
|
90
86
|
metrics: options.events,
|
@@ -97,7 +93,7 @@ export async function connect(peerConnection, muxerFactory, ufrag, options) {
|
|
97
93
|
case 'disconnected':
|
98
94
|
case 'closed':
|
99
95
|
maConn.close().catch((err) => {
|
100
|
-
options.log.error('error closing connection
|
96
|
+
options.log.error('error closing connection', err);
|
101
97
|
maConn.abort(err);
|
102
98
|
});
|
103
99
|
break;
|
@@ -107,6 +103,12 @@ export async function connect(peerConnection, muxerFactory, ufrag, options) {
|
|
107
103
|
});
|
108
104
|
// Track opened peer connection
|
109
105
|
options.events?.increment({ peer_connection: true });
|
106
|
+
const muxerFactory = new DataChannelMuxerFactory({
|
107
|
+
// @ts-expect-error https://github.com/murat-dogan/node-datachannel/pull/370
|
108
|
+
peerConnection,
|
109
|
+
metrics: options.events,
|
110
|
+
dataChannelOptions: options.dataChannel
|
111
|
+
});
|
110
112
|
if (options.role === 'client') {
|
111
113
|
// For outbound connections, the remote is expected to start the noise
|
112
114
|
// handshake. Therefore, we need to secure an inbound noise connection
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../../../src/private-to-public/utils/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../../../src/private-to-public/utils/connect.ts"],"names":[],"mappings":"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"}
|
@@ -1,7 +1,2 @@
|
|
1
|
-
|
2
|
-
import type { CreateDialerRTCPeerConnectionOptions } from './get-rtcpeerconnection.ts';
|
3
|
-
export declare function createDialerRTCPeerConnection(role: 'client' | 'server', ufrag: string, options?: CreateDialerRTCPeerConnectionOptions): Promise<{
|
4
|
-
peerConnection: RTCPeerConnection;
|
5
|
-
muxerFactory: DataChannelMuxerFactory;
|
6
|
-
}>;
|
1
|
+
export declare function createDialerRTCPeerConnection(role: 'client' | 'server', ufrag: string, rtcConfiguration?: RTCConfiguration | (() => RTCConfiguration | Promise<RTCConfiguration>), certificate?: RTCCertificate): Promise<RTCPeerConnection>;
|
7
2
|
//# sourceMappingURL=get-rtcpeerconnection.browser.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"get-rtcpeerconnection.browser.d.ts","sourceRoot":"","sources":["../../../../src/private-to-public/utils/get-rtcpeerconnection.browser.ts"],"names":[],"mappings":"AAAA,
|
1
|
+
{"version":3,"file":"get-rtcpeerconnection.browser.d.ts","sourceRoot":"","sources":["../../../../src/private-to-public/utils/get-rtcpeerconnection.browser.ts"],"names":[],"mappings":"AAAA,wBAAsB,6BAA6B,CAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAqBnP"}
|
@@ -1,7 +1,4 @@
|
|
1
|
-
|
2
|
-
export async function createDialerRTCPeerConnection(role, ufrag, options = {}) {
|
3
|
-
// @ts-expect-error options type is wrong
|
4
|
-
let certificate = options.certificate;
|
1
|
+
export async function createDialerRTCPeerConnection(role, ufrag, rtcConfiguration, certificate) {
|
5
2
|
if (certificate == null) {
|
6
3
|
// ECDSA is preferred over RSA here. From our testing we find that P-256 elliptic
|
7
4
|
// curve is supported by Pion, webrtc-rs, as well as Chromium (P-228 and P-384
|
@@ -14,19 +11,10 @@ export async function createDialerRTCPeerConnection(role, ufrag, options = {}) {
|
|
14
11
|
// hash: sdp.toSupportedHashFunction(hashName)
|
15
12
|
});
|
16
13
|
}
|
17
|
-
const rtcConfig = typeof
|
18
|
-
|
14
|
+
const rtcConfig = typeof rtcConfiguration === 'function' ? await rtcConfiguration() : rtcConfiguration;
|
15
|
+
return new RTCPeerConnection({
|
19
16
|
...(rtcConfig ?? {}),
|
20
17
|
certificates: [certificate]
|
21
18
|
});
|
22
|
-
const muxerFactory = new DataChannelMuxerFactory({
|
23
|
-
peerConnection,
|
24
|
-
metrics: options.events,
|
25
|
-
dataChannelOptions: options.dataChannel
|
26
|
-
});
|
27
|
-
return {
|
28
|
-
peerConnection,
|
29
|
-
muxerFactory
|
30
|
-
};
|
31
19
|
}
|
32
20
|
//# sourceMappingURL=get-rtcpeerconnection.browser.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"get-rtcpeerconnection.browser.js","sourceRoot":"","sources":["../../../../src/private-to-public/utils/get-rtcpeerconnection.browser.ts"],"names":[],"mappings":"AAAA,
|
1
|
+
{"version":3,"file":"get-rtcpeerconnection.browser.js","sourceRoot":"","sources":["../../../../src/private-to-public/utils/get-rtcpeerconnection.browser.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAE,IAAyB,EAAE,KAAa,EAAE,gBAA0F,EAAE,WAA4B;IACrN,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QACxB,iFAAiF;QACjF,8EAA8E;QAC9E,gFAAgF;QAChF,gCAAgC;QAChC,WAAW,GAAG,MAAM,iBAAiB,CAAC,mBAAmB,CAAC;YACxD,IAAI,EAAE,OAAO;YAEb,oEAAoE;YACpE,UAAU,EAAE,OAAO;YACnB,8CAA8C;SAC/C,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,gBAAgB,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,gBAAgB,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAA;IAEtG,OAAO,IAAI,iBAAiB,CAAC;QAC3B,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;QACpB,YAAY,EAAE,CAAC,WAAW,CAAC;KAC5B,CAAC,CAAA;AACJ,CAAC"}
|
@@ -1,8 +1,6 @@
|
|
1
1
|
import { PeerConnection } from 'node-datachannel';
|
2
2
|
import { RTCPeerConnection } from 'node-datachannel/polyfill';
|
3
|
-
import {
|
4
|
-
import type { DataChannelOptions, TransportCertificate } from '../../index.js';
|
5
|
-
import type { CounterGroup } from '@libp2p/interface';
|
3
|
+
import type { TransportCertificate } from '../../index.js';
|
6
4
|
import type { CertificateFingerprint } from 'node-datachannel';
|
7
5
|
interface DirectRTCPeerConnectionInit extends RTCConfiguration {
|
8
6
|
ufrag: string;
|
@@ -16,19 +14,6 @@ export declare class DirectRTCPeerConnection extends RTCPeerConnection {
|
|
16
14
|
createAnswer(): Promise<globalThis.RTCSessionDescriptionInit | any>;
|
17
15
|
remoteFingerprint(): CertificateFingerprint;
|
18
16
|
}
|
19
|
-
export
|
20
|
-
rtcConfiguration?: RTCConfiguration | (() => RTCConfiguration | Promise<RTCConfiguration>);
|
21
|
-
certificate?: TransportCertificate;
|
22
|
-
events?: CounterGroup;
|
23
|
-
dataChannel?: DataChannelOptions;
|
24
|
-
}
|
25
|
-
export declare function createDialerRTCPeerConnection(role: 'client', ufrag: string, options?: CreateDialerRTCPeerConnectionOptions): Promise<{
|
26
|
-
peerConnection: globalThis.RTCPeerConnection;
|
27
|
-
muxerFactory: DataChannelMuxerFactory;
|
28
|
-
}>;
|
29
|
-
export declare function createDialerRTCPeerConnection(role: 'server', ufrag: string, options?: CreateDialerRTCPeerConnectionOptions): Promise<{
|
30
|
-
peerConnection: DirectRTCPeerConnection;
|
31
|
-
muxerFactory: DataChannelMuxerFactory;
|
32
|
-
}>;
|
17
|
+
export declare function createDialerRTCPeerConnection(role: 'client' | 'server', ufrag: string, rtcConfiguration?: RTCConfiguration | (() => RTCConfiguration | Promise<RTCConfiguration>), certificate?: TransportCertificate): Promise<DirectRTCPeerConnection>;
|
33
18
|
export {};
|
34
19
|
//# sourceMappingURL=get-rtcpeerconnection.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"get-rtcpeerconnection.d.ts","sourceRoot":"","sources":["../../../../src/private-to-public/utils/get-rtcpeerconnection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;
|
1
|
+
{"version":3,"file":"get-rtcpeerconnection.d.ts","sourceRoot":"","sources":["../../../../src/private-to-public/utils/get-rtcpeerconnection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAG7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAI9D,UAAU,2BAA4B,SAAQ,gBAAgB;IAC5D,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,cAAc,CAAA;CAC/B;AAED,qBAAa,uBAAwB,SAAQ,iBAAiB;IAC5D,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;gBAEjB,IAAI,EAAE,2BAA2B;IAmBxC,WAAW,IAAK,OAAO,CAAC,UAAU,CAAC,yBAAyB,GAAG,GAAG,CAAC;IAYnE,YAAY,IAAK,OAAO,CAAC,UAAU,CAAC,yBAAyB,GAAG,GAAG,CAAC;IAY1E,iBAAiB,IAAK,sBAAsB;CAO7C;AAkBD,wBAAsB,6BAA6B,CAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA+B/P"}
|
@@ -2,7 +2,6 @@ import { Crypto } from '@peculiar/webcrypto';
|
|
2
2
|
import { PeerConnection } from 'node-datachannel';
|
3
3
|
import { RTCPeerConnection } from 'node-datachannel/polyfill';
|
4
4
|
import { DEFAULT_ICE_SERVERS, MAX_MESSAGE_SIZE } from '../../constants.js';
|
5
|
-
import { DataChannelMuxerFactory } from "../../muxer.js";
|
6
5
|
import { generateTransportCertificate } from './generate-certificates.js';
|
7
6
|
const crypto = new Crypto();
|
8
7
|
export class DirectRTCPeerConnection extends RTCPeerConnection {
|
@@ -65,8 +64,8 @@ function mapIceServers(iceServers) {
|
|
65
64
|
})
|
66
65
|
.flat() ?? [];
|
67
66
|
}
|
68
|
-
export async function createDialerRTCPeerConnection(role, ufrag,
|
69
|
-
if (
|
67
|
+
export async function createDialerRTCPeerConnection(role, ufrag, rtcConfiguration, certificate) {
|
68
|
+
if (certificate == null) {
|
70
69
|
// ECDSA is preferred over RSA here. From our testing we find that P-256
|
71
70
|
// elliptic curve is supported by Pion, webrtc-rs, as well as Chromium
|
72
71
|
// (P-228 and P-384 was not supported in Chromium). We use the same hash
|
@@ -75,33 +74,23 @@ export async function createDialerRTCPeerConnection(role, ufrag, options = {}) {
|
|
75
74
|
name: 'ECDSA',
|
76
75
|
namedCurve: 'P-256'
|
77
76
|
}, true, ['sign', 'verify']);
|
78
|
-
|
77
|
+
certificate = await generateTransportCertificate(keyPair, {
|
79
78
|
days: 365
|
80
79
|
});
|
81
80
|
}
|
82
|
-
const rtcConfig = typeof
|
83
|
-
|
81
|
+
const rtcConfig = typeof rtcConfiguration === 'function' ? await rtcConfiguration() : rtcConfiguration;
|
82
|
+
return new DirectRTCPeerConnection({
|
84
83
|
...rtcConfig,
|
85
84
|
ufrag,
|
86
85
|
peerConnection: new PeerConnection(`${role}-${Date.now()}`, {
|
87
86
|
disableFingerprintVerification: true,
|
88
87
|
disableAutoNegotiation: true,
|
89
|
-
certificatePemFile:
|
90
|
-
keyPemFile:
|
88
|
+
certificatePemFile: certificate.pem,
|
89
|
+
keyPemFile: certificate.privateKey,
|
91
90
|
enableIceUdpMux: role === 'server',
|
92
91
|
maxMessageSize: MAX_MESSAGE_SIZE,
|
93
92
|
iceServers: mapIceServers(rtcConfig?.iceServers ?? DEFAULT_ICE_SERVERS.map(urls => ({ urls })))
|
94
93
|
})
|
95
94
|
});
|
96
|
-
const muxerFactory = new DataChannelMuxerFactory({
|
97
|
-
// @ts-expect-error https://github.com/murat-dogan/node-datachannel/pull/370
|
98
|
-
peerConnection,
|
99
|
-
metrics: options.events,
|
100
|
-
dataChannelOptions: options.dataChannel
|
101
|
-
});
|
102
|
-
return {
|
103
|
-
peerConnection,
|
104
|
-
muxerFactory
|
105
|
-
};
|
106
95
|
}
|
107
96
|
//# sourceMappingURL=get-rtcpeerconnection.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"get-rtcpeerconnection.js","sourceRoot":"","sources":["../../../../src/private-to-public/utils/get-rtcpeerconnection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC1E,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"get-rtcpeerconnection.js","sourceRoot":"","sources":["../../../../src/private-to-public/utils/get-rtcpeerconnection.ts"],"names":[],"mappings":"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"}
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import type { RTCPeerConnection } from './webrtc/index.js';
|
1
2
|
import type { MultiaddrConnection } from '@libp2p/interface';
|
2
3
|
import type { AbstractMultiaddrConnectionInit } from '@libp2p/utils';
|
3
4
|
export interface RTCPeerConnectionMultiaddrConnectionInit extends Omit<AbstractMultiaddrConnectionInit, 'stream'> {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"rtcpeerconnection-to-conn.d.ts","sourceRoot":"","sources":["../../src/rtcpeerconnection-to-conn.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAgB,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAC1E,OAAO,KAAK,EAAE,+BAA+B,EAAc,MAAM,eAAe,CAAA;AAGhF,MAAM,WAAW,wCAAyC,SAAQ,IAAI,CAAC,+BAA+B,EAAE,QAAQ,CAAC;IAC/G,cAAc,EAAE,iBAAiB,CAAA;CAClC;AAmDD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAI,MAAM,wCAAwC,KAAG,mBAEtF,CAAA"}
|
1
|
+
{"version":3,"file":"rtcpeerconnection-to-conn.d.ts","sourceRoot":"","sources":["../../src/rtcpeerconnection-to-conn.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,KAAK,EAAgB,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAC1E,OAAO,KAAK,EAAE,+BAA+B,EAAc,MAAM,eAAe,CAAA;AAGhF,MAAM,WAAW,wCAAyC,SAAQ,IAAI,CAAC,+BAA+B,EAAE,QAAQ,CAAC;IAC/G,cAAc,EAAE,iBAAiB,CAAA;CAClC;AAmDD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAI,MAAM,wCAAwC,KAAG,mBAEtF,CAAA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"rtcpeerconnection-to-conn.js","sourceRoot":"","sources":["../../src/rtcpeerconnection-to-conn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAA;
|
1
|
+
{"version":3,"file":"rtcpeerconnection-to-conn.js","sourceRoot":"","sources":["../../src/rtcpeerconnection-to-conn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAA;AAU3D,MAAM,oCAAqC,SAAQ,2BAA2B;IACpE,cAAc,CAAmB;IAEzC,YAAa,IAA8C;QACzD,KAAK,CAAC,IAAI,CAAC,CAAA;QAEX,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAA;QAEzC,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAA;QAExD,IAAI,CAAC,cAAc,CAAC,uBAAuB,GAAG,GAAG,EAAE;YACjD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kDAAkD,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,YAAY,CAAC,CAAA;YAErH,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,KAAK,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,KAAK,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;gBACnK,8CAA8C;gBAC9C,IAAI,CAAC,iBAAiB,EAAE,CAAA;gBAExB,uCAAuC;gBACvC,qFAAqF;gBACrF,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;YAC7B,CAAC;QACH,CAAC,CAAA;IACH,CAAC;IAED,QAAQ,CAAE,IAAoB;QAC5B,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,WAAW,EAAE,IAAI;SAClB,CAAA;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAE,OAAsB;QACrC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;QAC3B,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;IACnC,CAAC;IAED,SAAS;QACP,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;IAC7B,CAAC;IAED,SAAS;QACP,+BAA+B;IACjC,CAAC;IAED,UAAU;QACR,+BAA+B;IACjC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAA8C,EAAuB,EAAE;IAC3G,OAAO,IAAI,oCAAoC,CAAC,IAAI,CAAC,CAAA;AACvD,CAAC,CAAA"}
|
package/dist/src/stream.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAK9C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAI/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACrF,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAGnE,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB,EAAE,kBAAkB;IAC9E;;;;;OAKG;IACH,OAAO,EAAE,cAAc,CAAA;IAEvB,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,qBAAa,YAAa,SAAQ,cAAc;IAC9C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IAExC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;IAC1C,OAAO,CAAC,cAAc,CAAC,CAA4B;IACnD,OAAO,CAAC,aAAa,CAAQ;gBAEhB,IAAI,EAAE,gBAAgB;
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAK9C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAI/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACrF,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAGnE,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB,EAAE,kBAAkB;IAC9E;;;;;OAKG;IACH,OAAO,EAAE,cAAc,CAAA;IAEvB,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,qBAAa,YAAa,SAAQ,cAAc;IAC9C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IAExC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;IAC1C,OAAO,CAAC,cAAc,CAAC,CAA4B;IACnD,OAAO,CAAC,aAAa,CAAQ;gBAEhB,IAAI,EAAE,gBAAgB;IAsFnC,aAAa,IAAK,IAAI;IAItB,YAAY,CAAE,IAAI,EAAE,cAAc,GAAG,IAAI;IAqBzC,QAAQ,CAAE,IAAI,EAAE,cAAc,GAAG,UAAU;IAsC3C,SAAS,CAAE,GAAG,EAAE,KAAK,GAAG,IAAI;IAUtB,cAAc,CAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBtD,aAAa,CAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3D;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAmC/B,OAAO,CAAC,SAAS;IAwBjB,SAAS,IAAK,IAAI;IAIlB,UAAU,IAAK,IAAI;CAGpB;AAED,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D;;;;;OAKG;IACH,OAAO,EAAE,cAAc,CAAA;IAEvB;;OAEG;IACH,SAAS,EAAE,sBAAsB,CAAA;IAEjC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IAEX;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,wBAAgB,YAAY,CAAE,OAAO,EAAE,mBAAmB,GAAG,YAAY,CASxE"}
|
package/dist/src/stream.js
CHANGED
@@ -57,6 +57,22 @@ export class WebRTCStream extends AbstractStream {
|
|
57
57
|
this.safeDispatchEvent('drain');
|
58
58
|
}
|
59
59
|
};
|
60
|
+
if (this.channel.readyState !== 'open') {
|
61
|
+
this.log('channel ready state is "%s" and not "open", waiting for "open" event before sending data', this.channel.readyState);
|
62
|
+
pEvent(this.channel, 'open', {
|
63
|
+
rejectionEvents: [
|
64
|
+
'close',
|
65
|
+
'error'
|
66
|
+
]
|
67
|
+
})
|
68
|
+
.then(() => {
|
69
|
+
this.log('channel ready state is now "%s", dispatching drain', this.channel.readyState);
|
70
|
+
this.safeDispatchEvent('drain');
|
71
|
+
})
|
72
|
+
.catch(err => {
|
73
|
+
this.abort(err.error ?? err);
|
74
|
+
});
|
75
|
+
}
|
60
76
|
// pipe framed protobuf messages through a length prefixed decoder, and
|
61
77
|
// surface data from the `Message.message` field through a source.
|
62
78
|
Promise.resolve().then(async () => {
|
@@ -65,7 +81,7 @@ export class WebRTCStream extends AbstractStream {
|
|
65
81
|
}
|
66
82
|
})
|
67
83
|
.catch(err => {
|
68
|
-
this.log.error('error processing incoming data channel messages
|
84
|
+
this.log.error('error processing incoming data channel messages', err);
|
69
85
|
});
|
70
86
|
// close when both writable ends are closed or an error occurs
|
71
87
|
const cleanUpDatachannelOnClose = () => {
|
@@ -75,25 +91,6 @@ export class WebRTCStream extends AbstractStream {
|
|
75
91
|
}
|
76
92
|
};
|
77
93
|
this.addEventListener('close', cleanUpDatachannelOnClose);
|
78
|
-
// chrome can receive message events before the open even is fired - calling
|
79
|
-
// code needs to attach message event listeners before these events occur
|
80
|
-
// but we need to wait before sending any data so this has to be done async
|
81
|
-
if (this.channel.readyState !== 'open') {
|
82
|
-
this.log('channel ready state is "%s" and not "open", waiting for "open" event before sending data', this.channel.readyState);
|
83
|
-
pEvent(this.channel, 'open', {
|
84
|
-
rejectionEvents: [
|
85
|
-
'close',
|
86
|
-
'error'
|
87
|
-
]
|
88
|
-
})
|
89
|
-
.then(() => {
|
90
|
-
this.log('channel ready state is now "%s", dispatching drain', this.channel.readyState);
|
91
|
-
this.safeDispatchEvent('drain');
|
92
|
-
})
|
93
|
-
.catch(err => {
|
94
|
-
this.abort(err.error ?? err);
|
95
|
-
});
|
96
|
-
}
|
97
94
|
}
|
98
95
|
sendNewStream() {
|
99
96
|
// opening new streams is handled by WebRTC so this is a noop
|
@@ -161,13 +158,8 @@ export class WebRTCStream extends AbstractStream {
|
|
161
158
|
this._sendFlag(Message.Flag.FIN);
|
162
159
|
options?.signal?.throwIfAborted();
|
163
160
|
this.receivedFinAck = Promise.withResolvers();
|
164
|
-
// wait for either:
|
165
|
-
// 1. the FIN_ACK to be received
|
166
|
-
// 2. the datachannel to close
|
167
|
-
// 3. timeout
|
168
161
|
await Promise.any([
|
169
162
|
raceSignal(this.receivedFinAck.promise, options?.signal),
|
170
|
-
pEvent(this.channel, 'close'),
|
171
163
|
new Promise(resolve => {
|
172
164
|
AbortSignal.timeout(this.finAckTimeout)
|
173
165
|
.addEventListener('abort', () => {
|
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,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,cAAc,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClH,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAkBrC,MAAM,OAAO,YAAa,SAAQ,cAAc;IAC9C;;OAEG;IACc,OAAO,CAAgB;IAExC;;;OAGG;IACc,YAAY,CAAsB;IAClC,iBAAiB,CAAQ;IAClC,cAAc,CAA6B;IAC3C,aAAa,CAAQ;IAE7B,YAAa,IAAsB;QACjC,KAAK,CAAC;YACJ,GAAG,IAAI;YACP,cAAc,EAAE,CAAC,IAAI,CAAC,cAAc,IAAI,gBAAgB,CAAC,GAAG,iBAAiB;SAC9E,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC3B,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,aAAa,CAAA;QACvC,IAAI,CAAC,YAAY,GAAG,QAAQ,EAAc,CAAA;QAC1C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,IAAI,mBAAmB,CAAA;QACtE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,uBAAuB,CAAA;QAElE,+BAA+B;QAC/B,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,GAAG,EAAE;YAC1B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAA;YAElD,IAAI,CAAC,kBAAkB,EAAE,CAAA;YACzB,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAC1B,CAAC,CAAA;QAED,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,GAAG,EAAE,EAAE;YAC7B,MAAM,GAAG,GAAI,GAAqB,CAAC,KAAK,CAAA;YAExC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAA;YAE5D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACjB,CAAC,CAAA;QAED,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,EAAE,KAAgC,EAAE,EAAE;YAClE,IAAI,CAAC,GAAG,CAAC,2BAA2B,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAC5D,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;YAEtB,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;gBAC3C,OAAM;YACR,CAAC;YAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;QAClE,CAAC,CAAA;QAED,8DAA8D;QAC9D,IAAI,CAAC,OAAO,CAAC,0BAA0B,GAAG,CAAC,CAAA;QAE3C,IAAI,CAAC,OAAO,CAAC,mBAAmB,GAAG,GAAG,EAAE;YACtC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC5B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;YACjC,CAAC;QACH,CAAC,CAAA;QAED,
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"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"}
|
package/dist/src/util.js
CHANGED
@@ -63,7 +63,7 @@ export function drainAndClose(channel, direction, drainTimeout = DATA_CHANNEL_DR
|
|
63
63
|
}
|
64
64
|
})
|
65
65
|
.catch(err => {
|
66
|
-
options.log.error('error closing outbound stream
|
66
|
+
options.log.error('error closing outbound stream', err);
|
67
67
|
});
|
68
68
|
}
|
69
69
|
export function isPeerConnection(obj) {
|
package/dist/src/util.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@libp2p/webrtc",
|
3
|
-
"version": "6.0.2-
|
3
|
+
"version": "6.0.2-39e2e541a",
|
4
4
|
"description": "A libp2p transport using WebRTC connections",
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/transport-webrtc#readme",
|
@@ -45,13 +45,13 @@
|
|
45
45
|
},
|
46
46
|
"dependencies": {
|
47
47
|
"@chainsafe/is-ip": "^2.1.0",
|
48
|
-
"@libp2p/crypto": "5.1.10-
|
49
|
-
"@libp2p/interface": "3.0.0-
|
50
|
-
"@libp2p/interface-internal": "3.0.1-
|
51
|
-
"@libp2p/keychain": "6.0.1-
|
48
|
+
"@libp2p/crypto": "5.1.10-39e2e541a",
|
49
|
+
"@libp2p/interface": "3.0.0-39e2e541a",
|
50
|
+
"@libp2p/interface-internal": "3.0.1-39e2e541a",
|
51
|
+
"@libp2p/keychain": "6.0.1-39e2e541a",
|
52
52
|
"@chainsafe/libp2p-noise": "^17.0.0",
|
53
|
-
"@libp2p/peer-id": "6.0.1-
|
54
|
-
"@libp2p/utils": "7.0.1-
|
53
|
+
"@libp2p/peer-id": "6.0.1-39e2e541a",
|
54
|
+
"@libp2p/utils": "7.0.1-39e2e541a",
|
55
55
|
"@multiformats/multiaddr": "^13.0.1",
|
56
56
|
"@multiformats/multiaddr-matcher": "^3.0.1",
|
57
57
|
"@peculiar/webcrypto": "^1.5.0",
|
@@ -79,7 +79,7 @@
|
|
79
79
|
"uint8arrays": "^5.1.0"
|
80
80
|
},
|
81
81
|
"devDependencies": {
|
82
|
-
"@libp2p/logger": "6.0.1-
|
82
|
+
"@libp2p/logger": "6.0.1-39e2e541a",
|
83
83
|
"@types/sinon": "^17.0.4",
|
84
84
|
"aegir": "^47.0.22",
|
85
85
|
"any-signal": "^4.1.1",
|
package/src/muxer.ts
CHANGED
@@ -39,44 +39,26 @@ export class DataChannelMuxerFactory implements StreamMuxerFactory {
|
|
39
39
|
private readonly peerConnection: RTCPeerConnection
|
40
40
|
private readonly metrics?: CounterGroup
|
41
41
|
private readonly dataChannelOptions?: DataChannelOptions
|
42
|
-
private readonly earlyDataChannels: RTCDataChannel[]
|
43
42
|
|
44
43
|
constructor (init: DataChannelMuxerFactoryInit) {
|
45
|
-
this.onEarlyDataChannel = this.onEarlyDataChannel.bind(this)
|
46
|
-
|
47
44
|
this.peerConnection = init.peerConnection
|
48
45
|
this.metrics = init.metrics
|
49
46
|
this.protocol = init.protocol ?? MUXER_PROTOCOL
|
50
47
|
this.dataChannelOptions = init.dataChannelOptions ?? {}
|
51
|
-
this.peerConnection.addEventListener('datachannel', this.onEarlyDataChannel)
|
52
|
-
this.earlyDataChannels = []
|
53
|
-
}
|
54
|
-
|
55
|
-
private onEarlyDataChannel (evt: RTCDataChannelEvent): void {
|
56
|
-
this.earlyDataChannels.push(evt.channel)
|
57
48
|
}
|
58
49
|
|
59
50
|
createStreamMuxer (maConn: MultiaddrConnection): StreamMuxer {
|
60
|
-
this.peerConnection.removeEventListener('datachannel', this.onEarlyDataChannel)
|
61
|
-
|
62
51
|
return new DataChannelMuxer(maConn, {
|
63
52
|
peerConnection: this.peerConnection,
|
64
53
|
dataChannelOptions: this.dataChannelOptions,
|
65
54
|
metrics: this.metrics,
|
66
|
-
protocol: this.protocol
|
67
|
-
earlyDataChannels: this.earlyDataChannels
|
55
|
+
protocol: this.protocol
|
68
56
|
})
|
69
57
|
}
|
70
58
|
}
|
71
59
|
|
72
60
|
export interface DataChannelMuxerInit extends DataChannelMuxerFactoryInit {
|
73
61
|
protocol: string
|
74
|
-
|
75
|
-
/**
|
76
|
-
* Incoming data channels that were opened by the remote before the peer
|
77
|
-
* connection was established
|
78
|
-
*/
|
79
|
-
earlyDataChannels: RTCDataChannel[]
|
80
62
|
}
|
81
63
|
|
82
64
|
export interface DataChannelMuxerComponents {
|
@@ -107,44 +89,27 @@ export class DataChannelMuxer extends AbstractStreamMuxer<WebRTCStream> implemen
|
|
107
89
|
* {@link https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/datachannel_event}
|
108
90
|
*/
|
109
91
|
this.peerConnection.ondatachannel = ({ channel }) => {
|
110
|
-
this.
|
111
|
-
|
92
|
+
this.log.trace('incoming %s datachannel with channel id %d, protocol %s and status %s', channel.protocol, channel.id, channel.protocol, channel.readyState)
|
93
|
+
|
94
|
+
// 'init' channel is only used during connection establishment, it is
|
95
|
+
// closed by the initiator
|
96
|
+
if (channel.label === 'init') {
|
97
|
+
this.log.trace('closing init channel %d', channel.id)
|
98
|
+
channel.close()
|
112
99
|
|
113
|
-
queueMicrotask(() => {
|
114
|
-
if (this.status !== 'open') {
|
115
|
-
init.earlyDataChannels.forEach(channel => {
|
116
|
-
channel.close()
|
117
|
-
})
|
118
100
|
return
|
119
101
|
}
|
120
102
|
|
121
|
-
|
122
|
-
this.
|
103
|
+
const stream = createStream({
|
104
|
+
...this.streamOptions,
|
105
|
+
...this.dataChannelOptions,
|
106
|
+
channel,
|
107
|
+
direction: 'inbound',
|
108
|
+
log: this.log
|
123
109
|
})
|
124
|
-
})
|
125
|
-
}
|
126
|
-
|
127
|
-
private onDataChannel (channel: RTCDataChannel): void {
|
128
|
-
this.log('incoming datachannel with channel id %d, protocol %s and status %s', channel.id, channel.protocol, channel.readyState)
|
129
|
-
|
130
|
-
// 'init' channel is only used during connection establishment, it is
|
131
|
-
// closed by the initiator
|
132
|
-
if (channel.label === 'init') {
|
133
|
-
this.log.trace('closing init channel %d', channel.id)
|
134
|
-
channel.close()
|
135
110
|
|
136
|
-
|
111
|
+
this.onRemoteStream(stream)
|
137
112
|
}
|
138
|
-
|
139
|
-
const stream = createStream({
|
140
|
-
...this.streamOptions,
|
141
|
-
...this.dataChannelOptions,
|
142
|
-
channel,
|
143
|
-
direction: 'inbound',
|
144
|
-
log: this.log
|
145
|
-
})
|
146
|
-
|
147
|
-
this.onRemoteStream(stream)
|
148
113
|
}
|
149
114
|
|
150
115
|
async onCreateStream (options?: CreateStreamOptions): Promise<WebRTCStream> {
|
@@ -32,7 +32,7 @@ export interface ConnectOptions extends LoggerOptions, ProgressOptions<WebRTCDia
|
|
32
32
|
logger: ComponentLogger
|
33
33
|
}
|
34
34
|
|
35
|
-
export async function initiateConnection ({ rtcConfiguration, dataChannel, signal, metrics, multiaddr: ma, connectionManager, transportManager, log, logger, onProgress }: ConnectOptions): Promise<{ remoteAddress: Multiaddr, peerConnection:
|
35
|
+
export async function initiateConnection ({ rtcConfiguration, dataChannel, signal, metrics, multiaddr: ma, connectionManager, transportManager, log, logger, onProgress }: ConnectOptions): Promise<{ remoteAddress: Multiaddr, peerConnection: RTCPeerConnection, muxerFactory: DataChannelMuxerFactory }> {
|
36
36
|
const { circuitAddress, targetPeer } = splitAddr(ma)
|
37
37
|
|
38
38
|
metrics?.dialerEvents.increment({ open: true })
|
@@ -128,7 +128,7 @@ export async function initiateConnection ({ rtcConfiguration, dataChannel, signa
|
|
128
128
|
|
129
129
|
// create an offer
|
130
130
|
const offerSdp = await peerConnection.createOffer().catch(err => {
|
131
|
-
log.error('could not execute createOffer
|
131
|
+
log.error('could not execute createOffer', err)
|
132
132
|
throw new SDPHandshakeFailedError('Failed to set createOffer')
|
133
133
|
})
|
134
134
|
|
@@ -143,7 +143,7 @@ export async function initiateConnection ({ rtcConfiguration, dataChannel, signa
|
|
143
143
|
|
144
144
|
// set offer as local description
|
145
145
|
await peerConnection.setLocalDescription(offerSdp).catch(err => {
|
146
|
-
log.error('could not execute setLocalDescription
|
146
|
+
log.error('could not execute setLocalDescription', err)
|
147
147
|
throw new SDPHandshakeFailedError('Failed to set localDescription')
|
148
148
|
})
|
149
149
|
|
@@ -164,7 +164,7 @@ export async function initiateConnection ({ rtcConfiguration, dataChannel, signa
|
|
164
164
|
|
165
165
|
const answerSdp = new RTCSessionDescription({ type: 'answer', sdp: answerMessage.data })
|
166
166
|
await peerConnection.setRemoteDescription(answerSdp).catch(err => {
|
167
|
-
log.error('could not execute setRemoteDescription
|
167
|
+
log.error('could not execute setRemoteDescription', err)
|
168
168
|
throw new SDPHandshakeFailedError('Failed to set remoteDescription')
|
169
169
|
})
|
170
170
|
|
@@ -209,12 +209,11 @@ export async function initiateConnection ({ rtcConfiguration, dataChannel, signa
|
|
209
209
|
|
210
210
|
return {
|
211
211
|
remoteAddress: ma,
|
212
|
-
// @ts-expect-error https://github.com/murat-dogan/node-datachannel/pull/370
|
213
212
|
peerConnection,
|
214
213
|
muxerFactory
|
215
214
|
}
|
216
215
|
} catch (err: any) {
|
217
|
-
log.error('outgoing signaling error
|
216
|
+
log.error('outgoing signaling error', err)
|
218
217
|
|
219
218
|
peerConnection.close()
|
220
219
|
stream.abort(err)
|