@libp2p/webrtc 4.0.7 → 4.0.8-64a915ae9
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 +12 -12
- package/dist/src/private-to-private/initiate-connection.d.ts.map +1 -1
- package/dist/src/private-to-private/initiate-connection.js +3 -13
- package/dist/src/private-to-private/initiate-connection.js.map +1 -1
- package/dist/src/private-to-private/signaling-stream-handler.d.ts.map +1 -1
- package/dist/src/private-to-private/signaling-stream-handler.js +20 -25
- 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 +2 -1
- package/dist/src/private-to-private/transport.js.map +1 -1
- package/dist/src/private-to-private/util.d.ts +1 -3
- package/dist/src/private-to-private/util.d.ts.map +1 -1
- package/dist/src/private-to-private/util.js +16 -25
- package/dist/src/private-to-private/util.js.map +1 -1
- package/package.json +11 -12
- package/src/private-to-private/initiate-connection.ts +3 -15
- package/src/private-to-private/signaling-stream-handler.ts +23 -33
- package/src/private-to-private/transport.ts +2 -1
- package/src/private-to-private/util.ts +19 -28
- package/dist/typedoc-urls.json +0 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initiate-connection.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/initiate-connection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"initiate-connection.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/initiate-connection.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,iBAAiB,EAAyB,MAAM,oBAAoB,CAAA;AAElF,OAAO,EAAiC,KAAK,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AAE3F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,mBAAmB,CAAA;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AACzG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,kBAAkB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAChD,MAAM,EAAE,WAAW,CAAA;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,cAAc,EAAE,iBAAiB,CAAA;IACjC,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;CACjC;AAED,wBAAsB,kBAAkB,CAAE,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,GAAG,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC;IAAE,aAAa,EAAE,SAAS,CAAA;CAAE,CAAC,CAgJ7L"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { CodeError } from '@libp2p/interface';
|
|
2
2
|
import { peerIdFromString } from '@libp2p/peer-id';
|
|
3
3
|
import { pbStream } from 'it-protobuf-stream';
|
|
4
|
-
import pDefer, {} from 'p-defer';
|
|
5
4
|
import { RTCSessionDescription } from '../webrtc/index.js';
|
|
6
5
|
import { Message } from './pb/message.js';
|
|
7
6
|
import { SIGNALING_PROTO_ID, splitAddr } from './transport.js';
|
|
8
|
-
import { readCandidatesUntilConnected
|
|
7
|
+
import { readCandidatesUntilConnected } from './util.js';
|
|
9
8
|
export async function initiateConnection({ peerConnection, signal, metrics, multiaddr: ma, connectionManager, transportManager, log }) {
|
|
10
9
|
const { baseAddr } = splitAddr(ma);
|
|
11
10
|
metrics?.dialerEvents.increment({ open: true });
|
|
@@ -37,14 +36,7 @@ export async function initiateConnection({ peerConnection, signal, metrics, mult
|
|
|
37
36
|
runOnTransientConnection: true
|
|
38
37
|
});
|
|
39
38
|
const messageStream = pbStream(stream).pb(Message);
|
|
40
|
-
const connectedPromise = pDefer();
|
|
41
|
-
const sdpAbortedListener = () => {
|
|
42
|
-
connectedPromise.reject(new CodeError('SDP handshake aborted', 'ERR_SDP_HANDSHAKE_ABORTED'));
|
|
43
|
-
};
|
|
44
39
|
try {
|
|
45
|
-
resolveOnConnected(peerConnection, connectedPromise);
|
|
46
|
-
// reject the connectedPromise if the signal aborts
|
|
47
|
-
signal?.addEventListener('abort', sdpAbortedListener);
|
|
48
40
|
// we create the channel so that the RTCPeerConnection has a component for
|
|
49
41
|
// which to collect candidates. The label is not relevant to connection
|
|
50
42
|
// initiation but can be useful for debugging
|
|
@@ -68,7 +60,7 @@ export async function initiateConnection({ peerConnection, signal, metrics, mult
|
|
|
68
60
|
});
|
|
69
61
|
};
|
|
70
62
|
peerConnection.onicecandidateerror = (event) => {
|
|
71
|
-
log('initiator ICE candidate error', event);
|
|
63
|
+
log.error('initiator ICE candidate error', event);
|
|
72
64
|
};
|
|
73
65
|
// create an offer
|
|
74
66
|
const offerSdp = await peerConnection.createOffer();
|
|
@@ -96,7 +88,7 @@ export async function initiateConnection({ peerConnection, signal, metrics, mult
|
|
|
96
88
|
throw new CodeError('Failed to set remoteDescription', 'ERR_SDP_HANDSHAKE_FAILED');
|
|
97
89
|
});
|
|
98
90
|
log.trace('initiator read candidates until connected');
|
|
99
|
-
await readCandidatesUntilConnected(
|
|
91
|
+
await readCandidatesUntilConnected(peerConnection, messageStream, {
|
|
100
92
|
direction: 'initiator',
|
|
101
93
|
signal,
|
|
102
94
|
log
|
|
@@ -118,8 +110,6 @@ export async function initiateConnection({ peerConnection, signal, metrics, mult
|
|
|
118
110
|
throw err;
|
|
119
111
|
}
|
|
120
112
|
finally {
|
|
121
|
-
// remove event listeners
|
|
122
|
-
signal?.removeEventListener('abort', sdpAbortedListener);
|
|
123
113
|
peerConnection.onicecandidate = null;
|
|
124
114
|
peerConnection.onicecandidateerror = null;
|
|
125
115
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initiate-connection.js","sourceRoot":"","sources":["../../../src/private-to-private/initiate-connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"initiate-connection.js","sourceRoot":"","sources":["../../../src/private-to-private/initiate-connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signaling-stream-handler.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/signaling-stream-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAGnE,OAAO,EAAE,KAAK,iBAAiB,EAAyB,MAAM,oBAAoB,CAAA;AAGlF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAEpE,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,cAAc,EAAE,iBAAiB,CAAA;IACjC,MAAM,EAAE,WAAW,CAAA;IACnB,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,wBAAsB,oBAAoB,CAAE,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAAC;IAAE,aAAa,EAAE,SAAS,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"signaling-stream-handler.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/signaling-stream-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAGnE,OAAO,EAAE,KAAK,iBAAiB,EAAyB,MAAM,oBAAoB,CAAA;AAGlF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAEpE,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,cAAc,EAAE,iBAAiB,CAAA;IACjC,MAAM,EAAE,WAAW,CAAA;IACnB,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,wBAAsB,oBAAoB,CAAE,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAAC;IAAE,aAAa,EAAE,SAAS,CAAA;CAAE,CAAC,CAuG1J"}
|
|
@@ -4,37 +4,30 @@ import { pbStream } from 'it-protobuf-stream';
|
|
|
4
4
|
import pDefer, {} from 'p-defer';
|
|
5
5
|
import { RTCSessionDescription } from '../webrtc/index.js';
|
|
6
6
|
import { Message } from './pb/message.js';
|
|
7
|
-
import { readCandidatesUntilConnected
|
|
7
|
+
import { readCandidatesUntilConnected } from './util.js';
|
|
8
8
|
export async function handleIncomingStream({ peerConnection, stream, signal, connection, log }) {
|
|
9
9
|
log.trace('new inbound signaling stream');
|
|
10
10
|
const messageStream = pbStream(stream).pb(Message);
|
|
11
11
|
try {
|
|
12
|
-
const connectedPromise = pDefer();
|
|
13
12
|
const answerSentPromise = pDefer();
|
|
14
|
-
signal.onabort = () => {
|
|
15
|
-
connectedPromise.reject(new CodeError('Timed out while trying to connect', 'ERR_TIMEOUT'));
|
|
16
|
-
};
|
|
17
13
|
// candidate callbacks
|
|
18
14
|
peerConnection.onicecandidate = ({ candidate }) => {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
log.error('cannot set candidate since sending answer failed', err);
|
|
34
|
-
connectedPromise.reject(err);
|
|
15
|
+
// a null candidate means end-of-candidates, an empty string candidate
|
|
16
|
+
// means end-of-candidates for this generation, otherwise this should
|
|
17
|
+
// be a valid candidate object
|
|
18
|
+
// see - https://www.w3.org/TR/webrtc/#rtcpeerconnectioniceevent
|
|
19
|
+
const data = JSON.stringify(candidate?.toJSON() ?? null);
|
|
20
|
+
log.trace('recipient sending ICE candidate %s', data);
|
|
21
|
+
messageStream.write({
|
|
22
|
+
type: Message.Type.ICE_CANDIDATE,
|
|
23
|
+
data
|
|
24
|
+
}, {
|
|
25
|
+
signal
|
|
26
|
+
})
|
|
27
|
+
.catch(err => {
|
|
28
|
+
log.error('error sending ICE candidate', err);
|
|
35
29
|
});
|
|
36
30
|
};
|
|
37
|
-
resolveOnConnected(peerConnection, connectedPromise);
|
|
38
31
|
// read an SDP offer
|
|
39
32
|
const pbOffer = await messageStream.read({
|
|
40
33
|
signal
|
|
@@ -62,15 +55,17 @@ export async function handleIncomingStream({ peerConnection, stream, signal, con
|
|
|
62
55
|
await messageStream.write({ type: Message.Type.SDP_ANSWER, data: answer.sdp }, {
|
|
63
56
|
signal
|
|
64
57
|
});
|
|
65
|
-
|
|
58
|
+
peerConnection.setLocalDescription(answer).then(() => {
|
|
59
|
+
answerSentPromise.resolve();
|
|
60
|
+
}, err => {
|
|
66
61
|
log.error('could not execute setLocalDescription', err);
|
|
67
62
|
answerSentPromise.reject(err);
|
|
68
63
|
throw new CodeError('Failed to set localDescription', 'ERR_SDP_HANDSHAKE_FAILED');
|
|
69
64
|
});
|
|
70
|
-
answerSentPromise.
|
|
65
|
+
await answerSentPromise.promise;
|
|
71
66
|
log.trace('recipient read candidates until connected');
|
|
72
67
|
// wait until candidates are connected
|
|
73
|
-
await readCandidatesUntilConnected(
|
|
68
|
+
await readCandidatesUntilConnected(peerConnection, messageStream, {
|
|
74
69
|
direction: 'recipient',
|
|
75
70
|
signal,
|
|
76
71
|
log
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signaling-stream-handler.js","sourceRoot":"","sources":["../../../src/private-to-private/signaling-stream-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAkB,MAAM,yBAAyB,CAAA;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,MAAM,EAAE,EAAwB,MAAM,SAAS,CAAA;AACtD,OAAO,EAA0B,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAClF,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,4BAA4B,EAAE,
|
|
1
|
+
{"version":3,"file":"signaling-stream-handler.js","sourceRoot":"","sources":["../../../src/private-to-private/signaling-stream-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/transport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,WAAW,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,eAAe,EAAe,KAAK,UAAU,EAAE,KAAK,MAAM,EAAE,KAAK,YAAY,EAAE,KAAK,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAEjQ,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAA;AASnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAIpH,eAAO,MAAM,kBAAkB,4BAA4B,CAAA;AAG3D,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAEhC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;IACpB,QAAQ,EAAE,QAAQ,CAAA;IAClB,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,YAAY,CAAA;IAC1B,cAAc,EAAE,YAAY,CAAA;CAC7B;AAED,qBAAa,eAAgB,YAAW,SAAS,EAAE,SAAS;IAOxD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI;IAPvB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAwB;IACjD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiB;gBAGjC,UAAU,EAAE,yBAAyB,EACrC,IAAI,GAAE,mBAAwB;
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/transport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,WAAW,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,eAAe,EAAe,KAAK,UAAU,EAAE,KAAK,MAAM,EAAE,KAAK,YAAY,EAAE,KAAK,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAEjQ,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAA;AASnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAIpH,eAAO,MAAM,kBAAkB,4BAA4B,CAAA;AAG3D,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAEhC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;IACpB,QAAQ,EAAE,QAAQ,CAAA;IAClB,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,YAAY,CAAA;IAC1B,cAAc,EAAE,YAAY,CAAA;CAC7B;AAED,qBAAa,eAAgB,YAAW,SAAS,EAAE,SAAS;IAOxD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI;IAPvB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAwB;IACjD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiB;gBAGjC,UAAU,EAAE,yBAAyB,EACrC,IAAI,GAAE,mBAAwB;IAoBjD,SAAS,IAAK,OAAO;IAIf,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IASvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAM5B,cAAc,CAAE,OAAO,EAAE,qBAAqB,GAAG,QAAQ;IAMzD,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAmB;IAEhD,QAAQ,CAAC,CAAC,eAAe,CAAC,QAAO;IAEjC,MAAM,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;IAWvC,IAAI,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAsC/D,WAAW,CAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2C7E,OAAO,CAAC,gBAAgB;CAezB;AAED,wBAAgB,SAAS,CAAE,EAAE,EAAE,SAAS,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA4BjF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CodeError } from '@libp2p/interface';
|
|
1
|
+
import { CodeError, setMaxListeners } from '@libp2p/interface';
|
|
2
2
|
import { transportSymbol } from '@libp2p/interface';
|
|
3
3
|
import { peerIdFromString } from '@libp2p/peer-id';
|
|
4
4
|
import { multiaddr } from '@multiformats/multiaddr';
|
|
@@ -26,6 +26,7 @@ export class WebRTCTransport {
|
|
|
26
26
|
this.init = init;
|
|
27
27
|
this.log = components.logger.forComponent('libp2p:webrtc');
|
|
28
28
|
this.shutdownController = new AbortController();
|
|
29
|
+
setMaxListeners(Infinity, this.shutdownController.signal);
|
|
29
30
|
if (components.metrics != null) {
|
|
30
31
|
this.metrics = {
|
|
31
32
|
dialerEvents: components.metrics.registerCounterGroup('libp2p_webrtc_dialer_events_total', {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/private-to-private/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/private-to-private/transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { Message } from './pb/message.js';
|
|
2
2
|
import type { LoggerOptions, Stream } from '@libp2p/interface';
|
|
3
3
|
import type { AbortOptions, MessageStream } from 'it-protobuf-stream';
|
|
4
|
-
import type { DeferredPromise } from 'p-defer';
|
|
5
4
|
export interface ReadCandidatesOptions extends AbortOptions, LoggerOptions {
|
|
6
5
|
direction: string;
|
|
7
6
|
}
|
|
8
|
-
export declare const readCandidatesUntilConnected: (
|
|
9
|
-
export declare function resolveOnConnected(pc: RTCPeerConnection, promise: DeferredPromise<void>): void;
|
|
7
|
+
export declare const readCandidatesUntilConnected: (pc: RTCPeerConnection, stream: MessageStream<Message, Stream>, options: ReadCandidatesOptions) => Promise<void>;
|
|
10
8
|
//# sourceMappingURL=util.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/util.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAGrE,MAAM,WAAW,qBAAsB,SAAQ,YAAY,EAAE,aAAa;IACxE,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,eAAO,MAAM,4BAA4B,OAAc,iBAAiB,UAAU,cAAc,OAAO,EAAE,MAAM,CAAC,WAAW,qBAAqB,KAAG,QAAQ,IAAI,CAoD9J,CAAA"}
|
|
@@ -1,31 +1,20 @@
|
|
|
1
1
|
import { CodeError } from '@libp2p/interface';
|
|
2
|
-
import
|
|
3
|
-
import { anySignal } from 'any-signal';
|
|
2
|
+
import pDefer from 'p-defer';
|
|
4
3
|
import { isFirefox } from '../util.js';
|
|
5
4
|
import { RTCIceCandidate } from '../webrtc/index.js';
|
|
6
5
|
import { Message } from './pb/message.js';
|
|
7
|
-
export const readCandidatesUntilConnected = async (
|
|
8
|
-
// if we connect, stop trying to read from the stream
|
|
9
|
-
const controller = new AbortController();
|
|
10
|
-
connectedPromise.promise.then(() => {
|
|
11
|
-
controller.abort();
|
|
12
|
-
}, () => {
|
|
13
|
-
controller.abort();
|
|
14
|
-
});
|
|
15
|
-
const signal = anySignal([
|
|
16
|
-
controller.signal,
|
|
17
|
-
options.signal
|
|
18
|
-
]);
|
|
19
|
-
const abortListener = () => {
|
|
20
|
-
closeSource(stream.unwrap().unwrap().source, options.log);
|
|
21
|
-
};
|
|
22
|
-
signal.addEventListener('abort', abortListener);
|
|
6
|
+
export const readCandidatesUntilConnected = async (pc, stream, options) => {
|
|
23
7
|
try {
|
|
8
|
+
const connectedPromise = pDefer();
|
|
9
|
+
resolveOnConnected(pc, connectedPromise);
|
|
24
10
|
// read candidates until we are connected or we reach the end of the stream
|
|
25
11
|
while (true) {
|
|
12
|
+
// if we connect, stop trying to read from the stream
|
|
26
13
|
const message = await Promise.race([
|
|
27
14
|
connectedPromise.promise,
|
|
28
|
-
stream.read(
|
|
15
|
+
stream.read({
|
|
16
|
+
signal: options.signal
|
|
17
|
+
})
|
|
29
18
|
]);
|
|
30
19
|
// stream ended or we became connected
|
|
31
20
|
if (message == null) {
|
|
@@ -54,15 +43,17 @@ export const readCandidatesUntilConnected = async (connectedPromise, pc, stream,
|
|
|
54
43
|
}
|
|
55
44
|
catch (err) {
|
|
56
45
|
options.log.error('%s error parsing ICE candidate', options.direction, err);
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
signal.clear();
|
|
46
|
+
if (options.signal?.aborted === true) {
|
|
47
|
+
throw err;
|
|
48
|
+
}
|
|
61
49
|
}
|
|
62
50
|
};
|
|
63
|
-
|
|
51
|
+
function getConnectionState(pc) {
|
|
52
|
+
return isFirefox ? pc.iceConnectionState : pc.connectionState;
|
|
53
|
+
}
|
|
54
|
+
function resolveOnConnected(pc, promise) {
|
|
64
55
|
pc[isFirefox ? 'oniceconnectionstatechange' : 'onconnectionstatechange'] = (_) => {
|
|
65
|
-
switch (
|
|
56
|
+
switch (getConnectionState(pc)) {
|
|
66
57
|
case 'connected':
|
|
67
58
|
promise.resolve();
|
|
68
59
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/private-to-private/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/private-to-private/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": "4.0.
|
|
3
|
+
"version": "4.0.8-64a915ae9",
|
|
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",
|
|
@@ -50,15 +50,14 @@
|
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
52
|
"@chainsafe/libp2p-noise": "^14.0.0",
|
|
53
|
-
"@libp2p/interface": "
|
|
54
|
-
"@libp2p/interface-internal": "
|
|
55
|
-
"@libp2p/logger": "
|
|
56
|
-
"@libp2p/peer-id": "
|
|
57
|
-
"@libp2p/utils": "
|
|
53
|
+
"@libp2p/interface": "1.0.1-64a915ae9",
|
|
54
|
+
"@libp2p/interface-internal": "1.0.1-64a915ae9",
|
|
55
|
+
"@libp2p/logger": "4.0.1-64a915ae9",
|
|
56
|
+
"@libp2p/peer-id": "4.0.1-64a915ae9",
|
|
57
|
+
"@libp2p/utils": "5.0.2-64a915ae9",
|
|
58
58
|
"@multiformats/mafmt": "^12.1.6",
|
|
59
59
|
"@multiformats/multiaddr": "^12.1.10",
|
|
60
60
|
"@multiformats/multiaddr-matcher": "^1.1.0",
|
|
61
|
-
"any-signal": "^4.1.1",
|
|
62
61
|
"detect-browser": "^5.3.0",
|
|
63
62
|
"it-length-prefixed": "^9.0.3",
|
|
64
63
|
"it-pipe": "^3.0.1",
|
|
@@ -79,10 +78,10 @@
|
|
|
79
78
|
},
|
|
80
79
|
"devDependencies": {
|
|
81
80
|
"@chainsafe/libp2p-yamux": "^6.0.1",
|
|
82
|
-
"@libp2p/circuit-relay-v2": "
|
|
83
|
-
"@libp2p/interface-compliance-tests": "
|
|
84
|
-
"@libp2p/peer-id-factory": "
|
|
85
|
-
"@libp2p/websockets": "
|
|
81
|
+
"@libp2p/circuit-relay-v2": "1.0.5-64a915ae9",
|
|
82
|
+
"@libp2p/interface-compliance-tests": "5.0.5-64a915ae9",
|
|
83
|
+
"@libp2p/peer-id-factory": "4.0.0-64a915ae9",
|
|
84
|
+
"@libp2p/websockets": "8.0.5-64a915ae9",
|
|
86
85
|
"@types/sinon": "^17.0.0",
|
|
87
86
|
"aegir": "^41.0.2",
|
|
88
87
|
"delay": "^6.0.0",
|
|
@@ -90,7 +89,7 @@
|
|
|
90
89
|
"it-length": "^3.0.2",
|
|
91
90
|
"it-map": "^3.0.3",
|
|
92
91
|
"it-pair": "^2.0.6",
|
|
93
|
-
"libp2p": "
|
|
92
|
+
"libp2p": "1.0.8-64a915ae9",
|
|
94
93
|
"p-retry": "^6.1.0",
|
|
95
94
|
"protons": "^7.3.0",
|
|
96
95
|
"sinon": "^17.0.0",
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { CodeError } from '@libp2p/interface'
|
|
2
2
|
import { peerIdFromString } from '@libp2p/peer-id'
|
|
3
3
|
import { pbStream } from 'it-protobuf-stream'
|
|
4
|
-
import pDefer, { type DeferredPromise } from 'p-defer'
|
|
5
4
|
import { type RTCPeerConnection, RTCSessionDescription } from '../webrtc/index.js'
|
|
6
5
|
import { Message } from './pb/message.js'
|
|
7
6
|
import { SIGNALING_PROTO_ID, splitAddr, type WebRTCTransportMetrics } from './transport.js'
|
|
8
|
-
import { readCandidatesUntilConnected
|
|
7
|
+
import { readCandidatesUntilConnected } from './util.js'
|
|
9
8
|
import type { DataChannelOptions } from '../index.js'
|
|
10
9
|
import type { LoggerOptions, Connection } from '@libp2p/interface'
|
|
11
10
|
import type { ConnectionManager, IncomingStreamData, TransportManager } from '@libp2p/interface-internal'
|
|
@@ -65,17 +64,8 @@ export async function initiateConnection ({ peerConnection, signal, metrics, mul
|
|
|
65
64
|
})
|
|
66
65
|
|
|
67
66
|
const messageStream = pbStream(stream).pb(Message)
|
|
68
|
-
const connectedPromise: DeferredPromise<void> = pDefer()
|
|
69
|
-
const sdpAbortedListener = (): void => {
|
|
70
|
-
connectedPromise.reject(new CodeError('SDP handshake aborted', 'ERR_SDP_HANDSHAKE_ABORTED'))
|
|
71
|
-
}
|
|
72
67
|
|
|
73
68
|
try {
|
|
74
|
-
resolveOnConnected(peerConnection, connectedPromise)
|
|
75
|
-
|
|
76
|
-
// reject the connectedPromise if the signal aborts
|
|
77
|
-
signal?.addEventListener('abort', sdpAbortedListener)
|
|
78
|
-
|
|
79
69
|
// we create the channel so that the RTCPeerConnection has a component for
|
|
80
70
|
// which to collect candidates. The label is not relevant to connection
|
|
81
71
|
// initiation but can be useful for debugging
|
|
@@ -102,7 +92,7 @@ export async function initiateConnection ({ peerConnection, signal, metrics, mul
|
|
|
102
92
|
})
|
|
103
93
|
}
|
|
104
94
|
peerConnection.onicecandidateerror = (event) => {
|
|
105
|
-
log('initiator ICE candidate error', event)
|
|
95
|
+
log.error('initiator ICE candidate error', event)
|
|
106
96
|
}
|
|
107
97
|
|
|
108
98
|
// create an offer
|
|
@@ -140,7 +130,7 @@ export async function initiateConnection ({ peerConnection, signal, metrics, mul
|
|
|
140
130
|
|
|
141
131
|
log.trace('initiator read candidates until connected')
|
|
142
132
|
|
|
143
|
-
await readCandidatesUntilConnected(
|
|
133
|
+
await readCandidatesUntilConnected(peerConnection, messageStream, {
|
|
144
134
|
direction: 'initiator',
|
|
145
135
|
signal,
|
|
146
136
|
log
|
|
@@ -164,8 +154,6 @@ export async function initiateConnection ({ peerConnection, signal, metrics, mul
|
|
|
164
154
|
stream.abort(err)
|
|
165
155
|
throw err
|
|
166
156
|
} finally {
|
|
167
|
-
// remove event listeners
|
|
168
|
-
signal?.removeEventListener('abort', sdpAbortedListener)
|
|
169
157
|
peerConnection.onicecandidate = null
|
|
170
158
|
peerConnection.onicecandidateerror = null
|
|
171
159
|
}
|
|
@@ -4,7 +4,7 @@ import { pbStream } from 'it-protobuf-stream'
|
|
|
4
4
|
import pDefer, { type DeferredPromise } from 'p-defer'
|
|
5
5
|
import { type RTCPeerConnection, RTCSessionDescription } from '../webrtc/index.js'
|
|
6
6
|
import { Message } from './pb/message.js'
|
|
7
|
-
import { readCandidatesUntilConnected
|
|
7
|
+
import { readCandidatesUntilConnected } from './util.js'
|
|
8
8
|
import type { Logger } from '@libp2p/interface'
|
|
9
9
|
import type { IncomingStreamData } from '@libp2p/interface-internal'
|
|
10
10
|
|
|
@@ -20,41 +20,29 @@ export async function handleIncomingStream ({ peerConnection, stream, signal, co
|
|
|
20
20
|
const messageStream = pbStream(stream).pb(Message)
|
|
21
21
|
|
|
22
22
|
try {
|
|
23
|
-
const connectedPromise: DeferredPromise<void> = pDefer()
|
|
24
23
|
const answerSentPromise: DeferredPromise<void> = pDefer()
|
|
25
24
|
|
|
26
|
-
signal.onabort = () => {
|
|
27
|
-
connectedPromise.reject(new CodeError('Timed out while trying to connect', 'ERR_TIMEOUT'))
|
|
28
|
-
}
|
|
29
|
-
|
|
30
25
|
// candidate callbacks
|
|
31
26
|
peerConnection.onicecandidate = ({ candidate }) => {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
(err) => {
|
|
50
|
-
log.error('cannot set candidate since sending answer failed', err)
|
|
51
|
-
connectedPromise.reject(err)
|
|
52
|
-
}
|
|
53
|
-
)
|
|
27
|
+
// a null candidate means end-of-candidates, an empty string candidate
|
|
28
|
+
// means end-of-candidates for this generation, otherwise this should
|
|
29
|
+
// be a valid candidate object
|
|
30
|
+
// see - https://www.w3.org/TR/webrtc/#rtcpeerconnectioniceevent
|
|
31
|
+
const data = JSON.stringify(candidate?.toJSON() ?? null)
|
|
32
|
+
|
|
33
|
+
log.trace('recipient sending ICE candidate %s', data)
|
|
34
|
+
|
|
35
|
+
messageStream.write({
|
|
36
|
+
type: Message.Type.ICE_CANDIDATE,
|
|
37
|
+
data
|
|
38
|
+
}, {
|
|
39
|
+
signal
|
|
40
|
+
})
|
|
41
|
+
.catch(err => {
|
|
42
|
+
log.error('error sending ICE candidate', err)
|
|
43
|
+
})
|
|
54
44
|
}
|
|
55
45
|
|
|
56
|
-
resolveOnConnected(peerConnection, connectedPromise)
|
|
57
|
-
|
|
58
46
|
// read an SDP offer
|
|
59
47
|
const pbOffer = await messageStream.read({
|
|
60
48
|
signal
|
|
@@ -90,18 +78,20 @@ export async function handleIncomingStream ({ peerConnection, stream, signal, co
|
|
|
90
78
|
signal
|
|
91
79
|
})
|
|
92
80
|
|
|
93
|
-
|
|
81
|
+
peerConnection.setLocalDescription(answer).then(() => {
|
|
82
|
+
answerSentPromise.resolve()
|
|
83
|
+
}, err => {
|
|
94
84
|
log.error('could not execute setLocalDescription', err)
|
|
95
85
|
answerSentPromise.reject(err)
|
|
96
86
|
throw new CodeError('Failed to set localDescription', 'ERR_SDP_HANDSHAKE_FAILED')
|
|
97
87
|
})
|
|
98
88
|
|
|
99
|
-
answerSentPromise.
|
|
89
|
+
await answerSentPromise.promise
|
|
100
90
|
|
|
101
91
|
log.trace('recipient read candidates until connected')
|
|
102
92
|
|
|
103
93
|
// wait until candidates are connected
|
|
104
|
-
await readCandidatesUntilConnected(
|
|
94
|
+
await readCandidatesUntilConnected(peerConnection, messageStream, {
|
|
105
95
|
direction: 'recipient',
|
|
106
96
|
signal,
|
|
107
97
|
log
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CodeError } from '@libp2p/interface'
|
|
1
|
+
import { CodeError, setMaxListeners } from '@libp2p/interface'
|
|
2
2
|
import { type CreateListenerOptions, type DialOptions, transportSymbol, type Transport, type Listener, type Upgrader, type ComponentLogger, type Logger, type Connection, type PeerId, type CounterGroup, type Metrics, type Startable } from '@libp2p/interface'
|
|
3
3
|
import { peerIdFromString } from '@libp2p/peer-id'
|
|
4
4
|
import { multiaddr, type Multiaddr } from '@multiformats/multiaddr'
|
|
@@ -56,6 +56,7 @@ export class WebRTCTransport implements Transport, Startable {
|
|
|
56
56
|
) {
|
|
57
57
|
this.log = components.logger.forComponent('libp2p:webrtc')
|
|
58
58
|
this.shutdownController = new AbortController()
|
|
59
|
+
setMaxListeners(Infinity, this.shutdownController.signal)
|
|
59
60
|
|
|
60
61
|
if (components.metrics != null) {
|
|
61
62
|
this.metrics = {
|