@libp2p/webrtc 5.2.3-6f8cfeafb → 5.2.3-90cca822b
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 +4 -4
- package/dist/src/constants.d.ts +0 -4
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +0 -4
- package/dist/src/constants.js.map +1 -1
- package/dist/src/private-to-private/transport.d.ts +1 -1
- package/dist/src/private-to-private/transport.d.ts.map +1 -1
- package/dist/src/private-to-private/transport.js +14 -6
- package/dist/src/private-to-private/transport.js.map +1 -1
- package/dist/src/private-to-public/listener.d.ts +2 -0
- package/dist/src/private-to-public/listener.d.ts.map +1 -1
- package/dist/src/private-to-public/listener.js +18 -7
- package/dist/src/private-to-public/listener.js.map +1 -1
- package/dist/src/private-to-public/transport.d.ts +2 -1
- package/dist/src/private-to-public/transport.d.ts.map +1 -1
- package/dist/src/private-to-public/transport.js +3 -3
- package/dist/src/private-to-public/transport.js.map +1 -1
- package/package.json +8 -8
- package/src/constants.ts +0 -4
- package/src/private-to-private/transport.ts +15 -6
- package/src/private-to-public/listener.ts +23 -8
- package/src/private-to-public/transport.ts +6 -4
package/dist/src/constants.d.ts
CHANGED
@@ -9,10 +9,6 @@
|
|
9
9
|
export declare const DEFAULT_ICE_SERVERS: string[];
|
10
10
|
export declare const UFRAG_ALPHABET: string[];
|
11
11
|
export declare const UFRAG_PREFIX = "libp2p+webrtc+v1/";
|
12
|
-
/**
|
13
|
-
* The time to wait, in milliseconds, for the data channel handshake to complete
|
14
|
-
*/
|
15
|
-
export declare const HANDSHAKE_TIMEOUT_MS = 10000;
|
16
12
|
export declare const CODEC_WEBRTC_DIRECT = 280;
|
17
13
|
export declare const CODEC_CERTHASH = 466;
|
18
14
|
//# sourceMappingURL=constants.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,UAK/B,CAAA;AAED,eAAO,MAAM,cAAc,UAA+E,CAAA;AAE1G,eAAO,MAAM,YAAY,sBAAsB,CAAA;AAE/C
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,UAK/B,CAAA;AAED,eAAO,MAAM,cAAc,UAA+E,CAAA;AAE1G,eAAO,MAAM,YAAY,sBAAsB,CAAA;AAE/C,eAAO,MAAM,mBAAmB,MAAS,CAAA;AACzC,eAAO,MAAM,cAAc,MAAS,CAAA"}
|
package/dist/src/constants.js
CHANGED
@@ -14,10 +14,6 @@ export const DEFAULT_ICE_SERVERS = [
|
|
14
14
|
];
|
15
15
|
export const UFRAG_ALPHABET = Array.from('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890');
|
16
16
|
export const UFRAG_PREFIX = 'libp2p+webrtc+v1/';
|
17
|
-
/**
|
18
|
-
* The time to wait, in milliseconds, for the data channel handshake to complete
|
19
|
-
*/
|
20
|
-
export const HANDSHAKE_TIMEOUT_MS = 10_000;
|
21
17
|
export const CODEC_WEBRTC_DIRECT = 0x0118;
|
22
18
|
export const CODEC_CERTHASH = 0x01d2;
|
23
19
|
//# sourceMappingURL=constants.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,8BAA8B;IAC9B,kCAAkC;IAClC,+BAA+B;IAC/B,qCAAqC;CACtC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAA;AAE1G,MAAM,CAAC,MAAM,YAAY,GAAG,mBAAmB,CAAA;AAE/C
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,8BAA8B;IAC9B,kCAAkC;IAClC,+BAA+B;IAC/B,qCAAqC;CACtC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAA;AAE1G,MAAM,CAAC,MAAM,YAAY,GAAG,mBAAmB,CAAA;AAE/C,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAA;AACzC,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAA"}
|
@@ -54,7 +54,7 @@ export declare class WebRTCTransport implements Transport<WebRTCDialEvents>, Sta
|
|
54
54
|
*/
|
55
55
|
dialFilter(multiaddrs: Multiaddr[]): Multiaddr[];
|
56
56
|
dial(ma: Multiaddr, options: DialTransportOptions<WebRTCDialEvents>): Promise<Connection>;
|
57
|
-
_onProtocol({ connection, stream }: IncomingStreamData): Promise<void>;
|
57
|
+
_onProtocol({ connection, stream }: IncomingStreamData, signal: AbortSignal): Promise<void>;
|
58
58
|
private _closeOnShutdown;
|
59
59
|
}
|
60
60
|
export declare function splitAddr(ma: Multiaddr): {
|
@@ -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,EAAmB,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEtI,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAA;AASnE,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,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACrR,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAChG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAIpD,eAAO,MAAM,kBAAkB,4BAA4B,CAAA;
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/transport.ts"],"names":[],"mappings":"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"}
|
@@ -12,7 +12,6 @@ import { handleIncomingStream } from './signaling-stream-handler.js';
|
|
12
12
|
const WEBRTC_TRANSPORT = '/webrtc';
|
13
13
|
const CIRCUIT_RELAY_TRANSPORT = '/p2p-circuit';
|
14
14
|
export const SIGNALING_PROTO_ID = '/webrtc-signaling/0.0.1';
|
15
|
-
const INBOUND_CONNECTION_TIMEOUT = 30 * 1000;
|
16
15
|
export class WebRTCTransport {
|
17
16
|
components;
|
18
17
|
init;
|
@@ -53,7 +52,15 @@ export class WebRTCTransport {
|
|
53
52
|
}
|
54
53
|
async start() {
|
55
54
|
await this.components.registrar.handle(SIGNALING_PROTO_ID, (data) => {
|
56
|
-
|
55
|
+
// ensure we don't try to upgrade forever
|
56
|
+
const signal = this.components.upgrader.createInboundAbortSignal(this.shutdownController.signal);
|
57
|
+
this._onProtocol(data, signal)
|
58
|
+
.catch(err => {
|
59
|
+
this.log.error('failed to handle incoming connect from %p', data.connection.remotePeer, err);
|
60
|
+
})
|
61
|
+
.finally(() => {
|
62
|
+
signal.clear();
|
63
|
+
});
|
57
64
|
}, {
|
58
65
|
runOnLimitedConnection: true
|
59
66
|
});
|
@@ -111,14 +118,14 @@ export class WebRTCTransport {
|
|
111
118
|
skipProtection: true,
|
112
119
|
skipEncryption: true,
|
113
120
|
muxerFactory,
|
114
|
-
onProgress: options.onProgress
|
121
|
+
onProgress: options.onProgress,
|
122
|
+
signal: options.signal
|
115
123
|
});
|
116
124
|
// close the connection on shut down
|
117
125
|
this._closeOnShutdown(peerConnection, webRTCConn);
|
118
126
|
return connection;
|
119
127
|
}
|
120
|
-
async _onProtocol({ connection, stream }) {
|
121
|
-
const signal = AbortSignal.timeout(this.init.inboundConnectionTimeout ?? INBOUND_CONNECTION_TIMEOUT);
|
128
|
+
async _onProtocol({ connection, stream }, signal) {
|
122
129
|
const peerConnection = new RTCPeerConnection(await getRtcConfiguration(this.init.rtcConfiguration));
|
123
130
|
const muxerFactory = new DataChannelMuxerFactory(this.components, {
|
124
131
|
peerConnection,
|
@@ -145,7 +152,8 @@ export class WebRTCTransport {
|
|
145
152
|
await this.components.upgrader.upgradeInbound(webRTCConn, {
|
146
153
|
skipEncryption: true,
|
147
154
|
skipProtection: true,
|
148
|
-
muxerFactory
|
155
|
+
muxerFactory,
|
156
|
+
signal
|
149
157
|
});
|
150
158
|
// close the connection on shut down
|
151
159
|
this._closeOnShutdown(peerConnection, webRTCConn);
|
@@ -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,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACtI,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAkB,MAAM,yBAAyB,CAAA;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAA;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACrD,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;AAMpE,MAAM,gBAAgB,GAAG,SAAS,CAAA;AAClC,MAAM,uBAAuB,GAAG,cAAc,CAAA;AAC9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,yBAAyB,CAAA;
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/private-to-private/transport.ts"],"names":[],"mappings":"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"}
|
@@ -6,6 +6,7 @@ export interface WebRTCDirectListenerComponents {
|
|
6
6
|
peerId: PeerId;
|
7
7
|
privateKey: PrivateKey;
|
8
8
|
logger: ComponentLogger;
|
9
|
+
upgrader: Upgrader;
|
9
10
|
metrics?: Metrics;
|
10
11
|
}
|
11
12
|
export interface WebRTCDirectListenerInit {
|
@@ -27,6 +28,7 @@ export declare class WebRTCDirectListener extends TypedEventEmitter<ListenerEven
|
|
27
28
|
private readonly init;
|
28
29
|
private readonly components;
|
29
30
|
private readonly metrics?;
|
31
|
+
private readonly shutdownController;
|
30
32
|
constructor(components: WebRTCDirectListenerComponents, init: WebRTCDirectListenerInit);
|
31
33
|
listen(ma: Multiaddr): Promise<void>;
|
32
34
|
private startUDPMuxServer;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../../src/private-to-public/listener.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAWzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAG3E,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,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAIxD,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,QAAQ,CAAA;IAClB,YAAY,CAAC,EAAE,oBAAoB,EAAE,CAAA;IACrC,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,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,YAAY,CAAA;CAC7B;AAiBD,qBAAa,oBAAqB,SAAQ,iBAAiB,CAAC,cAAc,CAAE,YAAW,QAAQ;IAC7F,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,WAAW,CAAC,CAAsB;IAC1C,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;
|
1
|
+
{"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../../src/private-to-public/listener.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAWzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAG3E,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,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAIxD,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,eAAe,CAAA;IACvB,QAAQ,EAAE,QAAQ,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,QAAQ,CAAA;IAClB,YAAY,CAAC,EAAE,oBAAoB,EAAE,CAAA;IACrC,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,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,YAAY,CAAA;CAC7B;AAiBD,qBAAa,oBAAqB,SAAQ,iBAAiB,CAAC,cAAc,CAAE,YAAW,QAAQ;IAC7F,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,WAAW,CAAC,CAAsB;IAC1C,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;IAqBjF,MAAM,CAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA6D3C,OAAO,CAAC,iBAAiB;YAgDX,kBAAkB;IAmDhC,QAAQ,IAAK,SAAS,EAAE;IAIxB,mBAAmB,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI;IA4B7C,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;CA8B9B"}
|
@@ -6,7 +6,7 @@ import { IP4, WebRTCDirect } from '@multiformats/multiaddr-matcher';
|
|
6
6
|
import { Crypto } from '@peculiar/webcrypto';
|
7
7
|
import getPort from 'get-port';
|
8
8
|
import pWaitFor from 'p-wait-for';
|
9
|
-
import { CODEC_CERTHASH, CODEC_WEBRTC_DIRECT
|
9
|
+
import { CODEC_CERTHASH, CODEC_WEBRTC_DIRECT } from '../constants.js';
|
10
10
|
import { connect } from './utils/connect.js';
|
11
11
|
import { generateTransportCertificate } from './utils/generate-certificates.js';
|
12
12
|
import { createDialerRTCPeerConnection } from './utils/get-rtcpeerconnection.js';
|
@@ -24,6 +24,7 @@ export class WebRTCDirectListener extends TypedEventEmitter {
|
|
24
24
|
init;
|
25
25
|
components;
|
26
26
|
metrics;
|
27
|
+
shutdownController;
|
27
28
|
constructor(components, init) {
|
28
29
|
super();
|
29
30
|
this.init = init;
|
@@ -32,6 +33,7 @@ export class WebRTCDirectListener extends TypedEventEmitter {
|
|
32
33
|
this.connections = new Map();
|
33
34
|
this.log = components.logger.forComponent('libp2p:webrtc-direct:listener');
|
34
35
|
this.certificate = init.certificates?.[0];
|
36
|
+
this.shutdownController = new AbortController();
|
35
37
|
if (components.metrics != null) {
|
36
38
|
this.metrics = {
|
37
39
|
listenerEvents: components.metrics.registerCounterGroup('libp2p_webrtc-direct_listener_events_total', {
|
@@ -121,15 +123,19 @@ export class WebRTCDirectListener extends TypedEventEmitter {
|
|
121
123
|
port = await getPort();
|
122
124
|
}
|
123
125
|
return stunListener(host, port, this.log, (ufrag, remoteHost, remotePort) => {
|
124
|
-
this.
|
126
|
+
const signal = this.components.upgrader.createInboundAbortSignal(this.shutdownController.signal);
|
127
|
+
this.incomingConnection(ufrag, remoteHost, remotePort, signal)
|
125
128
|
.catch(err => {
|
126
129
|
this.log.error('error processing incoming STUN request', err);
|
130
|
+
})
|
131
|
+
.finally(() => {
|
132
|
+
signal.clear();
|
127
133
|
});
|
128
134
|
});
|
129
135
|
})
|
130
136
|
};
|
131
137
|
}
|
132
|
-
async incomingConnection(ufrag, remoteHost, remotePort) {
|
138
|
+
async incomingConnection(ufrag, remoteHost, remotePort, signal) {
|
133
139
|
const key = `${remoteHost}:${remotePort}:${ufrag}`;
|
134
140
|
let peerConnection = this.connections.get(key);
|
135
141
|
if (peerConnection != null) {
|
@@ -137,6 +143,8 @@ export class WebRTCDirectListener extends TypedEventEmitter {
|
|
137
143
|
return;
|
138
144
|
}
|
139
145
|
this.log('create peer connection for %s', key);
|
146
|
+
// do not create RTCPeerConnection objects if the signal has aborted already
|
147
|
+
signal.throwIfAborted();
|
140
148
|
// https://github.com/libp2p/specs/blob/master/webrtc/webrtc-direct.md#browser-to-public-server
|
141
149
|
peerConnection = await createDialerRTCPeerConnection('server', ufrag, this.init.rtcConfiguration, this.certificate);
|
142
150
|
this.connections.set(key, peerConnection);
|
@@ -158,7 +166,7 @@ export class WebRTCDirectListener extends TypedEventEmitter {
|
|
158
166
|
logger: this.components.logger,
|
159
167
|
metrics: this.components.metrics,
|
160
168
|
events: this.metrics?.listenerEvents,
|
161
|
-
signal
|
169
|
+
signal,
|
162
170
|
remoteAddr: multiaddr(`/ip${isIPv4(remoteHost) ? 4 : 6}/${remoteHost}/udp/${remotePort}`),
|
163
171
|
dataChannel: this.init.dataChannel,
|
164
172
|
upgrader: this.init.upgrader,
|
@@ -196,9 +204,6 @@ export class WebRTCDirectListener extends TypedEventEmitter {
|
|
196
204
|
}
|
197
205
|
}
|
198
206
|
async close() {
|
199
|
-
for (const connection of this.connections.values()) {
|
200
|
-
connection.close();
|
201
|
-
}
|
202
207
|
// stop our UDP mux listeners
|
203
208
|
await Promise.all(UDP_MUX_LISTENERS
|
204
209
|
.filter(listener => listener.owner === this)
|
@@ -208,6 +213,12 @@ export class WebRTCDirectListener extends TypedEventEmitter {
|
|
208
213
|
}));
|
209
214
|
// remove our stopped UDP mux listeners
|
210
215
|
UDP_MUX_LISTENERS = UDP_MUX_LISTENERS.filter(listener => listener.owner !== this);
|
216
|
+
// close existing connections
|
217
|
+
for (const connection of this.connections.values()) {
|
218
|
+
connection.close();
|
219
|
+
}
|
220
|
+
// stop any in-progress incoming dials
|
221
|
+
this.shutdownController.abort();
|
211
222
|
// RTCPeerConnections will be removed from the connections map when their
|
212
223
|
// connection state changes to 'closed'/'disconnected'/'failed
|
213
224
|
await pWaitFor(() => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"listener.js","sourceRoot":"","sources":["../../../src/private-to-public/listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACzE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAChF,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,OAAO,MAAM,UAAU,CAAA;AAC9B,OAAO,QAAQ,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,
|
1
|
+
{"version":3,"file":"listener.js","sourceRoot":"","sources":["../../../src/private-to-public/listener.ts"],"names":[],"mappings":"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"}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { serviceCapabilities, transportSymbol } from '@libp2p/interface';
|
2
2
|
import type { DataChannelOptions, TransportCertificate } from '../index.js';
|
3
3
|
import type { WebRTCDialEvents } from '../private-to-private/transport.js';
|
4
|
-
import type { CreateListenerOptions, Transport, Listener, ComponentLogger, Connection, CounterGroup, Metrics, PeerId, DialTransportOptions, PrivateKey } from '@libp2p/interface';
|
4
|
+
import type { CreateListenerOptions, Transport, Listener, ComponentLogger, Connection, CounterGroup, Metrics, PeerId, DialTransportOptions, PrivateKey, Upgrader } from '@libp2p/interface';
|
5
5
|
import type { TransportManager } from '@libp2p/interface-internal';
|
6
6
|
import type { Multiaddr } from '@multiformats/multiaddr';
|
7
7
|
/**
|
@@ -13,6 +13,7 @@ export interface WebRTCDirectTransportComponents {
|
|
13
13
|
metrics?: Metrics;
|
14
14
|
logger: ComponentLogger;
|
15
15
|
transportManager: TransportManager;
|
16
|
+
upgrader: Upgrader;
|
16
17
|
}
|
17
18
|
export interface WebRTCMetrics {
|
18
19
|
dialerEvents: CounterGroup;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/private-to-public/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/private-to-public/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAQxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAC1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAU,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACnM,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,eAAe,CAAA;IACvB,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,QAAQ,EAAE,QAAQ,CAAA;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,YAAY,CAAA;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAC1F,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAChC,YAAY,CAAC,EAAE,oBAAoB,EAAE,CAAA;IAErC;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,qBAAa,qBAAsB,YAAW,SAAS;IACrD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiC;IAC5D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA2B;gBAEnC,UAAU,EAAE,+BAA+B,EAAE,IAAI,GAAE,yBAA8B;IAe9F,QAAQ,CAAC,CAAC,eAAe,CAAC,QAAO;IAEjC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,2BAA0B;IAEvD,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAEvC;IAED;;OAEG;IACG,IAAI,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAMhG;;OAEG;IACH,cAAc,CAAE,OAAO,EAAE,qBAAqB,GAAG,QAAQ;IAOzD;;OAEG;IACH,YAAY,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;IAInD;;OAEG;IACH,UAAU,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;IAIjD;;OAEG;IACG,QAAQ,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;CAmCrG"}
|
@@ -2,7 +2,6 @@ import { serviceCapabilities, transportSymbol } from '@libp2p/interface';
|
|
2
2
|
import { peerIdFromString } from '@libp2p/peer-id';
|
3
3
|
import { WebRTCDirect } from '@multiformats/multiaddr-matcher';
|
4
4
|
import { raceSignal } from 'race-signal';
|
5
|
-
import { HANDSHAKE_TIMEOUT_MS } from '../constants.js';
|
6
5
|
import { genUfrag } from '../util.js';
|
7
6
|
import { WebRTCDirectListener } from './listener.js';
|
8
7
|
import { connect } from './utils/connect.js';
|
@@ -34,7 +33,6 @@ export class WebRTCDirectTransport {
|
|
34
33
|
* Dial a given multiaddr
|
35
34
|
*/
|
36
35
|
async dial(ma, options) {
|
37
|
-
options?.signal?.throwIfAborted();
|
38
36
|
const rawConn = await this._connect(ma, options);
|
39
37
|
this.log('dialing address: %a', ma);
|
40
38
|
return rawConn;
|
@@ -64,6 +62,8 @@ export class WebRTCDirectTransport {
|
|
64
62
|
* Connect to a peer using a multiaddr
|
65
63
|
*/
|
66
64
|
async _connect(ma, options) {
|
65
|
+
// do not create RTCPeerConnection if the signal has already been aborted
|
66
|
+
options.signal.throwIfAborted();
|
67
67
|
let theirPeerId;
|
68
68
|
const remotePeerString = ma.getPeerId();
|
69
69
|
if (remotePeerString != null) {
|
@@ -79,7 +79,7 @@ export class WebRTCDirectTransport {
|
|
79
79
|
logger: this.components.logger,
|
80
80
|
metrics: this.components.metrics,
|
81
81
|
events: this.metrics?.dialerEvents,
|
82
|
-
signal: options.signal
|
82
|
+
signal: options.signal,
|
83
83
|
remoteAddr: ma,
|
84
84
|
dataChannel: this.init.dataChannel,
|
85
85
|
upgrader: options.upgrader,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/private-to-public/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/private-to-public/transport.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@libp2p/webrtc",
|
3
|
-
"version": "5.2.3-
|
3
|
+
"version": "5.2.3-90cca822b",
|
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",
|
@@ -54,10 +54,10 @@
|
|
54
54
|
"@chainsafe/is-ip": "^2.0.2",
|
55
55
|
"@chainsafe/libp2p-noise": "^16.0.0",
|
56
56
|
"@ipshipyard/node-datachannel": "^0.26.4",
|
57
|
-
"@libp2p/interface": "2.6.0-
|
58
|
-
"@libp2p/interface-internal": "2.3.4-
|
59
|
-
"@libp2p/peer-id": "5.0.13-
|
60
|
-
"@libp2p/utils": "6.5.4-
|
57
|
+
"@libp2p/interface": "2.6.0-90cca822b",
|
58
|
+
"@libp2p/interface-internal": "2.3.4-90cca822b",
|
59
|
+
"@libp2p/peer-id": "5.0.13-90cca822b",
|
60
|
+
"@libp2p/utils": "6.5.4-90cca822b",
|
61
61
|
"@multiformats/multiaddr": "^12.4.0",
|
62
62
|
"@multiformats/multiaddr-matcher": "^1.6.0",
|
63
63
|
"@peculiar/webcrypto": "^1.5.0",
|
@@ -83,9 +83,9 @@
|
|
83
83
|
"uint8arrays": "^5.1.0"
|
84
84
|
},
|
85
85
|
"devDependencies": {
|
86
|
-
"@libp2p/crypto": "5.0.12-
|
87
|
-
"@libp2p/interface-compliance-tests": "6.3.4-
|
88
|
-
"@libp2p/logger": "5.1.9-
|
86
|
+
"@libp2p/crypto": "5.0.12-90cca822b",
|
87
|
+
"@libp2p/interface-compliance-tests": "6.3.4-90cca822b",
|
88
|
+
"@libp2p/logger": "5.1.9-90cca822b",
|
89
89
|
"@types/sinon": "^17.0.3",
|
90
90
|
"aegir": "^45.1.1",
|
91
91
|
"delay": "^6.0.0",
|
package/src/constants.ts
CHANGED
@@ -17,9 +17,5 @@ export const UFRAG_ALPHABET = Array.from('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKL
|
|
17
17
|
|
18
18
|
export const UFRAG_PREFIX = 'libp2p+webrtc+v1/'
|
19
19
|
|
20
|
-
/**
|
21
|
-
* The time to wait, in milliseconds, for the data channel handshake to complete
|
22
|
-
*/
|
23
|
-
export const HANDSHAKE_TIMEOUT_MS = 10_000
|
24
20
|
export const CODEC_WEBRTC_DIRECT = 0x0118
|
25
21
|
export const CODEC_CERTHASH = 0x01d2
|
@@ -17,7 +17,6 @@ import type { ProgressEvent } from 'progress-events'
|
|
17
17
|
const WEBRTC_TRANSPORT = '/webrtc'
|
18
18
|
const CIRCUIT_RELAY_TRANSPORT = '/p2p-circuit'
|
19
19
|
export const SIGNALING_PROTO_ID = '/webrtc-signaling/0.0.1'
|
20
|
-
const INBOUND_CONNECTION_TIMEOUT = 30 * 1000
|
21
20
|
|
22
21
|
export interface WebRTCTransportInit {
|
23
22
|
rtcConfiguration?: RTCConfiguration | (() => RTCConfiguration | Promise<RTCConfiguration>)
|
@@ -106,7 +105,16 @@ export class WebRTCTransport implements Transport<WebRTCDialEvents>, Startable {
|
|
106
105
|
|
107
106
|
async start (): Promise<void> {
|
108
107
|
await this.components.registrar.handle(SIGNALING_PROTO_ID, (data: IncomingStreamData) => {
|
109
|
-
|
108
|
+
// ensure we don't try to upgrade forever
|
109
|
+
const signal = this.components.upgrader.createInboundAbortSignal(this.shutdownController.signal)
|
110
|
+
|
111
|
+
this._onProtocol(data, signal)
|
112
|
+
.catch(err => {
|
113
|
+
this.log.error('failed to handle incoming connect from %p', data.connection.remotePeer, err)
|
114
|
+
})
|
115
|
+
.finally(() => {
|
116
|
+
signal.clear()
|
117
|
+
})
|
110
118
|
}, {
|
111
119
|
runOnLimitedConnection: true
|
112
120
|
})
|
@@ -172,7 +180,8 @@ export class WebRTCTransport implements Transport<WebRTCDialEvents>, Startable {
|
|
172
180
|
skipProtection: true,
|
173
181
|
skipEncryption: true,
|
174
182
|
muxerFactory,
|
175
|
-
onProgress: options.onProgress
|
183
|
+
onProgress: options.onProgress,
|
184
|
+
signal: options.signal
|
176
185
|
})
|
177
186
|
|
178
187
|
// close the connection on shut down
|
@@ -181,8 +190,7 @@ export class WebRTCTransport implements Transport<WebRTCDialEvents>, Startable {
|
|
181
190
|
return connection
|
182
191
|
}
|
183
192
|
|
184
|
-
async _onProtocol ({ connection, stream }: IncomingStreamData): Promise<void> {
|
185
|
-
const signal = AbortSignal.timeout(this.init.inboundConnectionTimeout ?? INBOUND_CONNECTION_TIMEOUT)
|
193
|
+
async _onProtocol ({ connection, stream }: IncomingStreamData, signal: AbortSignal): Promise<void> {
|
186
194
|
const peerConnection = new RTCPeerConnection(await getRtcConfiguration(this.init.rtcConfiguration))
|
187
195
|
const muxerFactory = new DataChannelMuxerFactory(this.components, {
|
188
196
|
peerConnection,
|
@@ -213,7 +221,8 @@ export class WebRTCTransport implements Transport<WebRTCDialEvents>, Startable {
|
|
213
221
|
await this.components.upgrader.upgradeInbound(webRTCConn, {
|
214
222
|
skipEncryption: true,
|
215
223
|
skipProtection: true,
|
216
|
-
muxerFactory
|
224
|
+
muxerFactory,
|
225
|
+
signal
|
217
226
|
})
|
218
227
|
|
219
228
|
// close the connection on shut down
|
@@ -6,7 +6,7 @@ import { IP4, WebRTCDirect } from '@multiformats/multiaddr-matcher'
|
|
6
6
|
import { Crypto } from '@peculiar/webcrypto'
|
7
7
|
import getPort from 'get-port'
|
8
8
|
import pWaitFor from 'p-wait-for'
|
9
|
-
import { CODEC_CERTHASH, CODEC_WEBRTC_DIRECT
|
9
|
+
import { CODEC_CERTHASH, CODEC_WEBRTC_DIRECT } from '../constants.js'
|
10
10
|
import { connect } from './utils/connect.js'
|
11
11
|
import { generateTransportCertificate } from './utils/generate-certificates.js'
|
12
12
|
import { createDialerRTCPeerConnection } from './utils/get-rtcpeerconnection.js'
|
@@ -23,6 +23,7 @@ export interface WebRTCDirectListenerComponents {
|
|
23
23
|
peerId: PeerId
|
24
24
|
privateKey: PrivateKey
|
25
25
|
logger: ComponentLogger
|
26
|
+
upgrader: Upgrader
|
26
27
|
metrics?: Metrics
|
27
28
|
}
|
28
29
|
|
@@ -62,6 +63,7 @@ export class WebRTCDirectListener extends TypedEventEmitter<ListenerEvents> impl
|
|
62
63
|
private readonly init: WebRTCDirectListenerInit
|
63
64
|
private readonly components: WebRTCDirectListenerComponents
|
64
65
|
private readonly metrics?: WebRTCListenerMetrics
|
66
|
+
private readonly shutdownController: AbortController
|
65
67
|
|
66
68
|
constructor (components: WebRTCDirectListenerComponents, init: WebRTCDirectListenerInit) {
|
67
69
|
super()
|
@@ -72,6 +74,7 @@ export class WebRTCDirectListener extends TypedEventEmitter<ListenerEvents> impl
|
|
72
74
|
this.connections = new Map()
|
73
75
|
this.log = components.logger.forComponent('libp2p:webrtc-direct:listener')
|
74
76
|
this.certificate = init.certificates?.[0]
|
77
|
+
this.shutdownController = new AbortController()
|
75
78
|
|
76
79
|
if (components.metrics != null) {
|
77
80
|
this.metrics = {
|
@@ -178,16 +181,21 @@ export class WebRTCDirectListener extends TypedEventEmitter<ListenerEvents> impl
|
|
178
181
|
}
|
179
182
|
|
180
183
|
return stunListener(host, port, this.log, (ufrag, remoteHost, remotePort) => {
|
181
|
-
this.
|
184
|
+
const signal = this.components.upgrader.createInboundAbortSignal(this.shutdownController.signal)
|
185
|
+
|
186
|
+
this.incomingConnection(ufrag, remoteHost, remotePort, signal)
|
182
187
|
.catch(err => {
|
183
188
|
this.log.error('error processing incoming STUN request', err)
|
184
189
|
})
|
190
|
+
.finally(() => {
|
191
|
+
signal.clear()
|
192
|
+
})
|
185
193
|
})
|
186
194
|
})
|
187
195
|
}
|
188
196
|
}
|
189
197
|
|
190
|
-
private async incomingConnection (ufrag: string, remoteHost: string, remotePort: number): Promise<void> {
|
198
|
+
private async incomingConnection (ufrag: string, remoteHost: string, remotePort: number, signal: AbortSignal): Promise<void> {
|
191
199
|
const key = `${remoteHost}:${remotePort}:${ufrag}`
|
192
200
|
let peerConnection = this.connections.get(key)
|
193
201
|
|
@@ -198,6 +206,9 @@ export class WebRTCDirectListener extends TypedEventEmitter<ListenerEvents> impl
|
|
198
206
|
|
199
207
|
this.log('create peer connection for %s', key)
|
200
208
|
|
209
|
+
// do not create RTCPeerConnection objects if the signal has aborted already
|
210
|
+
signal.throwIfAborted()
|
211
|
+
|
201
212
|
// https://github.com/libp2p/specs/blob/master/webrtc/webrtc-direct.md#browser-to-public-server
|
202
213
|
peerConnection = await createDialerRTCPeerConnection('server', ufrag, this.init.rtcConfiguration, this.certificate)
|
203
214
|
|
@@ -222,7 +233,7 @@ export class WebRTCDirectListener extends TypedEventEmitter<ListenerEvents> impl
|
|
222
233
|
logger: this.components.logger,
|
223
234
|
metrics: this.components.metrics,
|
224
235
|
events: this.metrics?.listenerEvents,
|
225
|
-
signal
|
236
|
+
signal,
|
226
237
|
remoteAddr: multiaddr(`/ip${isIPv4(remoteHost) ? 4 : 6}/${remoteHost}/udp/${remotePort}`),
|
227
238
|
dataChannel: this.init.dataChannel,
|
228
239
|
upgrader: this.init.upgrader,
|
@@ -268,10 +279,6 @@ export class WebRTCDirectListener extends TypedEventEmitter<ListenerEvents> impl
|
|
268
279
|
}
|
269
280
|
|
270
281
|
async close (): Promise<void> {
|
271
|
-
for (const connection of this.connections.values()) {
|
272
|
-
connection.close()
|
273
|
-
}
|
274
|
-
|
275
282
|
// stop our UDP mux listeners
|
276
283
|
await Promise.all(
|
277
284
|
UDP_MUX_LISTENERS
|
@@ -285,6 +292,14 @@ export class WebRTCDirectListener extends TypedEventEmitter<ListenerEvents> impl
|
|
285
292
|
// remove our stopped UDP mux listeners
|
286
293
|
UDP_MUX_LISTENERS = UDP_MUX_LISTENERS.filter(listener => listener.owner !== this)
|
287
294
|
|
295
|
+
// close existing connections
|
296
|
+
for (const connection of this.connections.values()) {
|
297
|
+
connection.close()
|
298
|
+
}
|
299
|
+
|
300
|
+
// stop any in-progress incoming dials
|
301
|
+
this.shutdownController.abort()
|
302
|
+
|
288
303
|
// RTCPeerConnections will be removed from the connections map when their
|
289
304
|
// connection state changes to 'closed'/'disconnected'/'failed
|
290
305
|
await pWaitFor(() => {
|