Update to RingRTC v2.54.1
Co-authored-by: Miriam Zimmerman <mutexlox@signal.org>
This commit is contained in:
parent
3e24e510e6
commit
0771075a75
7 changed files with 50 additions and 88 deletions
|
@ -13769,7 +13769,7 @@ For more information on this, and how to apply and follow the GNU AGPL, see
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## libsignal-account-keys 0.1.0, libsignal-core 0.1.0, mrp 2.53.0, protobuf 2.53.0, ringrtc 2.53.0, regex-aot 0.1.0, partial-default-derive 0.1.0
|
## libsignal-account-keys 0.1.0, libsignal-core 0.1.0, mrp 2.54.1, protobuf 2.54.1, ringrtc 2.54.1, regex-aot 0.1.0, partial-default-derive 0.1.0
|
||||||
|
|
||||||
```
|
```
|
||||||
GNU AFFERO GENERAL PUBLIC LICENSE
|
GNU AFFERO GENERAL PUBLIC LICENSE
|
||||||
|
@ -15450,38 +15450,6 @@ DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## hex-literal 0.4.1
|
|
||||||
|
|
||||||
```
|
|
||||||
Copyright (c) 2018 Artyom Pavlov
|
|
||||||
Copyright (c) 2018 The RustCrypto Project Developers
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any
|
|
||||||
person obtaining a copy of this software and associated
|
|
||||||
documentation files (the "Software"), to deal in the
|
|
||||||
Software without restriction, including without
|
|
||||||
limitation the rights to use, copy, modify, merge,
|
|
||||||
publish, distribute, sublicense, and/or sell copies of
|
|
||||||
the Software, and to permit persons to whom the Software
|
|
||||||
is furnished to do so, subject to the following
|
|
||||||
conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice
|
|
||||||
shall be included in all copies or substantial portions
|
|
||||||
of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
|
|
||||||
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
|
|
||||||
TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
|
|
||||||
SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
||||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
|
|
||||||
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
||||||
DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
## bytes 1.10.1
|
## bytes 1.10.1
|
||||||
|
|
||||||
```
|
```
|
||||||
|
@ -16095,7 +16063,7 @@ SOFTWARE.
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## rand 0.8.5, rand_chacha 0.3.1, rand_core 0.6.4
|
## rand 0.8.5, rand 0.9.1, rand_chacha 0.3.1, rand_chacha 0.9.0, rand_core 0.6.4, rand_core 0.9.3
|
||||||
|
|
||||||
```
|
```
|
||||||
Copyright 2018 Developers of the Rand project
|
Copyright 2018 Developers of the Rand project
|
||||||
|
@ -16267,6 +16235,32 @@ SOFTWARE.
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## const-str 0.6.2
|
||||||
|
|
||||||
|
```
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2020 Nugine
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
```
|
||||||
|
|
||||||
## derive-where 1.4.0
|
## derive-where 1.4.0
|
||||||
|
|
||||||
```
|
```
|
||||||
|
@ -16334,7 +16328,7 @@ SOFTWARE.
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## curve25519-dalek-derive 0.1.1, anyhow 1.0.98, displaydoc 0.2.5, fastrand 2.3.0, itoa 1.0.15, linkme-impl 0.3.33, linkme 0.3.33, linux-raw-sys 0.9.4, num_enum 0.7.3, num_enum_derive 0.7.3, once_cell 1.21.3, prettyplease 0.2.32, proc-macro-crate 3.3.0, proc-macro2 1.0.95, quote 1.0.40, rustix 1.0.7, semver 1.0.26, send_wrapper 0.6.0, serde 1.0.219, serde_derive 1.0.219, serde_json 1.0.140, syn 1.0.109, syn 2.0.101, thiserror-impl 1.0.69, thiserror 1.0.69, unicode-ident 1.0.18
|
## curve25519-dalek-derive 0.1.1, anyhow 1.0.98, displaydoc 0.2.5, fastrand 2.3.0, itoa 1.0.15, linkme-impl 0.3.33, linkme 0.3.33, linux-raw-sys 0.9.4, num_enum 0.7.3, num_enum_derive 0.7.3, once_cell 1.21.3, prettyplease 0.2.32, proc-macro-crate 3.3.0, proc-macro2 1.0.95, quote 1.0.40, rustix 1.0.7, semver 1.0.26, send_wrapper 0.6.0, serde 1.0.219, serde_derive 1.0.219, serde_json 1.0.140, syn 1.0.109, syn 2.0.101, thiserror-impl 1.0.69, thiserror-impl 2.0.12, thiserror 1.0.69, thiserror 2.0.12, unicode-ident 1.0.18
|
||||||
|
|
||||||
```
|
```
|
||||||
Permission is hereby granted, free of charge, to any
|
Permission is hereby granted, free of charge, to any
|
||||||
|
@ -16603,7 +16597,7 @@ THE SOFTWARE.
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## derive_more-impl 1.0.0, derive_more 1.0.0
|
## derive_more-impl 2.0.1, derive_more 2.0.1
|
||||||
|
|
||||||
```
|
```
|
||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
|
@ -122,7 +122,7 @@
|
||||||
"@react-types/shared": "3.27.0",
|
"@react-types/shared": "3.27.0",
|
||||||
"@signalapp/libsignal-client": "0.76.0",
|
"@signalapp/libsignal-client": "0.76.0",
|
||||||
"@signalapp/quill-cjs": "2.1.2",
|
"@signalapp/quill-cjs": "2.1.2",
|
||||||
"@signalapp/ringrtc": "2.53.0",
|
"@signalapp/ringrtc": "2.54.1",
|
||||||
"@signalapp/sqlcipher": "2.0.3",
|
"@signalapp/sqlcipher": "2.0.3",
|
||||||
"@signalapp/windows-ucv": "1.0.0",
|
"@signalapp/windows-ucv": "1.0.0",
|
||||||
"@tanstack/react-virtual": "3.11.2",
|
"@tanstack/react-virtual": "3.11.2",
|
||||||
|
|
10
pnpm-lock.yaml
generated
10
pnpm-lock.yaml
generated
|
@ -135,8 +135,8 @@ importers:
|
||||||
specifier: 2.1.2
|
specifier: 2.1.2
|
||||||
version: 2.1.2
|
version: 2.1.2
|
||||||
'@signalapp/ringrtc':
|
'@signalapp/ringrtc':
|
||||||
specifier: 2.53.0
|
specifier: 2.54.1
|
||||||
version: 2.53.0
|
version: 2.54.1
|
||||||
'@signalapp/sqlcipher':
|
'@signalapp/sqlcipher':
|
||||||
specifier: 2.0.3
|
specifier: 2.0.3
|
||||||
version: 2.0.3
|
version: 2.0.3
|
||||||
|
@ -2780,8 +2780,8 @@ packages:
|
||||||
resolution: {integrity: sha512-y2sgqdivlrG41J4Zvt/82xtH/PZjDlgItqlD2g/Cv3ZbjlR6cGhTNXbfNygCJB8nXj+C7I28pjt1Zm3k0pv2mg==}
|
resolution: {integrity: sha512-y2sgqdivlrG41J4Zvt/82xtH/PZjDlgItqlD2g/Cv3ZbjlR6cGhTNXbfNygCJB8nXj+C7I28pjt1Zm3k0pv2mg==}
|
||||||
engines: {npm: '>=8.2.3'}
|
engines: {npm: '>=8.2.3'}
|
||||||
|
|
||||||
'@signalapp/ringrtc@2.53.0':
|
'@signalapp/ringrtc@2.54.1':
|
||||||
resolution: {integrity: sha512-X2+NRyZWNa1mk4RN1+PodB5kxgsc8vkUB2T7wn9ma0w3E3UOWGqCTOKmBZRTywOAUWkWi/wBA3rVo22CmjjaDA==}
|
resolution: {integrity: sha512-BcV4ewf3QJl3QAltWS+nImZx4o4k3cTEL1RFnSY8vO1lg9Zc4XkaDJVjbSEWakQR8NorrFIy/nNEf+RKb8kr+g==}
|
||||||
|
|
||||||
'@signalapp/sqlcipher@2.0.3':
|
'@signalapp/sqlcipher@2.0.3':
|
||||||
resolution: {integrity: sha512-aywstwV6Lg17NSPVK7fb40CIF687D6352YwCwAxDSxrw/qTxJampgdHzPpMrsepb0y6gSAzdYEpRbosJZPqP/g==}
|
resolution: {integrity: sha512-aywstwV6Lg17NSPVK7fb40CIF687D6352YwCwAxDSxrw/qTxJampgdHzPpMrsepb0y6gSAzdYEpRbosJZPqP/g==}
|
||||||
|
@ -12498,7 +12498,7 @@ snapshots:
|
||||||
lodash: 4.17.21
|
lodash: 4.17.21
|
||||||
quill-delta: 5.1.0
|
quill-delta: 5.1.0
|
||||||
|
|
||||||
'@signalapp/ringrtc@2.53.0':
|
'@signalapp/ringrtc@2.54.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
https-proxy-agent: 7.0.6
|
https-proxy-agent: 7.0.6
|
||||||
tar: 6.2.1
|
tar: 6.2.1
|
||||||
|
|
|
@ -18,9 +18,6 @@ import { parseRemoteClientExpiration } from './util/parseRemoteClientExpiration'
|
||||||
const log = createLogger('RemoteConfig');
|
const log = createLogger('RemoteConfig');
|
||||||
|
|
||||||
export type ConfigKeyType =
|
export type ConfigKeyType =
|
||||||
| 'desktop.calling.ringrtcAdmFull.3'
|
|
||||||
| 'desktop.calling.ringrtcAdmInternal'
|
|
||||||
| 'desktop.calling.ringrtcAdmPreStable'
|
|
||||||
| 'desktop.chatFolders.alpha'
|
| 'desktop.chatFolders.alpha'
|
||||||
| 'desktop.chatFolders.beta'
|
| 'desktop.chatFolders.beta'
|
||||||
| 'desktop.chatFolders.prod'
|
| 'desktop.chatFolders.prod'
|
||||||
|
|
|
@ -46,6 +46,7 @@ import {
|
||||||
CreateCallLinkCredentialRequestContext,
|
CreateCallLinkCredentialRequestContext,
|
||||||
CreateCallLinkCredentialResponse,
|
CreateCallLinkCredentialResponse,
|
||||||
GenericServerPublicParams,
|
GenericServerPublicParams,
|
||||||
|
ServerPublicParams,
|
||||||
} from '@signalapp/libsignal-client/zkgroup';
|
} from '@signalapp/libsignal-client/zkgroup';
|
||||||
import { Aci } from '@signalapp/libsignal-client';
|
import { Aci } from '@signalapp/libsignal-client';
|
||||||
import { CanvasVideoRenderer, GumVideoCapturer } from '../calling/VideoSupport';
|
import { CanvasVideoRenderer, GumVideoCapturer } from '../calling/VideoSupport';
|
||||||
|
@ -158,7 +159,6 @@ import { getConversationIdForLogging } from '../util/idForLogging';
|
||||||
import { sendCallLinkUpdateSync } from '../util/sendCallLinkUpdateSync';
|
import { sendCallLinkUpdateSync } from '../util/sendCallLinkUpdateSync';
|
||||||
import { createIdenticon } from '../util/createIdenticon';
|
import { createIdenticon } from '../util/createIdenticon';
|
||||||
import { getColorForCallLink } from '../util/getColorForCallLink';
|
import { getColorForCallLink } from '../util/getColorForCallLink';
|
||||||
import { getUseRingrtcAdm } from '../util/ringrtc/ringrtcAdm';
|
|
||||||
import OS from '../util/os/osMain';
|
import OS from '../util/os/osMain';
|
||||||
import { sleep } from '../util/sleep';
|
import { sleep } from '../util/sleep';
|
||||||
|
|
||||||
|
@ -502,7 +502,6 @@ export class CallingClass {
|
||||||
|
|
||||||
RingRTC.setConfig({
|
RingRTC.setConfig({
|
||||||
field_trials: undefined,
|
field_trials: undefined,
|
||||||
use_ringrtc_adm: getUseRingrtcAdm(),
|
|
||||||
});
|
});
|
||||||
|
|
||||||
RingRTC.handleOutgoingSignaling = this.#handleOutgoingSignaling.bind(this);
|
RingRTC.handleOutgoingSignaling = this.#handleOutgoingSignaling.bind(this);
|
||||||
|
@ -1007,12 +1006,17 @@ export class CallingClass {
|
||||||
|
|
||||||
const authCredentialPresentation =
|
const authCredentialPresentation =
|
||||||
await getCallLinkAuthCredentialPresentation(callLinkRootKey);
|
await getCallLinkAuthCredentialPresentation(callLinkRootKey);
|
||||||
|
const serverPublicParams = new ServerPublicParams(
|
||||||
|
Buffer.from(window.getServerPublicParams(), 'base64')
|
||||||
|
);
|
||||||
|
const endorsementsPublicKey = serverPublicParams.getEndorsementPublicKey();
|
||||||
|
|
||||||
const groupCall = this.connectCallLinkCall({
|
const groupCall = this.connectCallLinkCall({
|
||||||
roomId,
|
roomId,
|
||||||
authCredentialPresentation,
|
authCredentialPresentation,
|
||||||
callLinkRootKey,
|
callLinkRootKey,
|
||||||
adminPasskey,
|
adminPasskey,
|
||||||
|
endorsementsPublicKey: Buffer.from(endorsementsPublicKey),
|
||||||
});
|
});
|
||||||
|
|
||||||
groupCall.setOutgoingAudioMuted(!hasLocalAudio);
|
groupCall.setOutgoingAudioMuted(!hasLocalAudio);
|
||||||
|
@ -1352,11 +1356,13 @@ export class CallingClass {
|
||||||
authCredentialPresentation,
|
authCredentialPresentation,
|
||||||
callLinkRootKey,
|
callLinkRootKey,
|
||||||
adminPasskey,
|
adminPasskey,
|
||||||
|
endorsementsPublicKey,
|
||||||
}: {
|
}: {
|
||||||
roomId: string;
|
roomId: string;
|
||||||
authCredentialPresentation: CallLinkAuthCredentialPresentation;
|
authCredentialPresentation: CallLinkAuthCredentialPresentation;
|
||||||
callLinkRootKey: CallLinkRootKey;
|
callLinkRootKey: CallLinkRootKey;
|
||||||
adminPasskey: Buffer | undefined;
|
adminPasskey: Buffer | undefined;
|
||||||
|
endorsementsPublicKey: Buffer;
|
||||||
}): GroupCall {
|
}): GroupCall {
|
||||||
const existing = this.#getGroupCall(roomId);
|
const existing = this.#getGroupCall(roomId);
|
||||||
if (existing) {
|
if (existing) {
|
||||||
|
@ -1380,6 +1386,7 @@ export class CallingClass {
|
||||||
|
|
||||||
const outerGroupCall = RingRTC.getCallLinkCall(
|
const outerGroupCall = RingRTC.getCallLinkCall(
|
||||||
this._sfuUrl,
|
this._sfuUrl,
|
||||||
|
endorsementsPublicKey,
|
||||||
Buffer.from(authCredentialPresentation.serialize()),
|
Buffer.from(authCredentialPresentation.serialize()),
|
||||||
callLinkRootKey,
|
callLinkRootKey,
|
||||||
undefined,
|
undefined,
|
||||||
|
@ -1803,6 +1810,10 @@ export class CallingClass {
|
||||||
const authCredentialPresentation =
|
const authCredentialPresentation =
|
||||||
await getCallLinkAuthCredentialPresentation(callLinkRootKey);
|
await getCallLinkAuthCredentialPresentation(callLinkRootKey);
|
||||||
const adminPasskey = adminKey ? toAdminKeyBytes(adminKey) : undefined;
|
const adminPasskey = adminKey ? toAdminKeyBytes(adminKey) : undefined;
|
||||||
|
const serverPublicParams = new ServerPublicParams(
|
||||||
|
Buffer.from(window.getServerPublicParams(), 'base64')
|
||||||
|
);
|
||||||
|
const endorsementsPublicKey = serverPublicParams.getEndorsementPublicKey();
|
||||||
|
|
||||||
// RingRTC reuses the same type GroupCall between Adhoc and Group calls.
|
// RingRTC reuses the same type GroupCall between Adhoc and Group calls.
|
||||||
const groupCall = this.connectCallLinkCall({
|
const groupCall = this.connectCallLinkCall({
|
||||||
|
@ -1810,6 +1821,7 @@ export class CallingClass {
|
||||||
authCredentialPresentation,
|
authCredentialPresentation,
|
||||||
callLinkRootKey,
|
callLinkRootKey,
|
||||||
adminPasskey,
|
adminPasskey,
|
||||||
|
endorsementsPublicKey: Buffer.from(endorsementsPublicKey),
|
||||||
});
|
});
|
||||||
|
|
||||||
// Set the camera disposition as we transition from the lobby to the call link call.
|
// Set the camera disposition as we transition from the lobby to the call link call.
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
// Copyright 2024 Signal Messenger, LLC
|
|
||||||
// SPDX-License-Identifier: AGPL-3.0-only
|
|
||||||
|
|
||||||
import * as RemoteConfig from '../../RemoteConfig';
|
|
||||||
import { isProduction } from '../version';
|
|
||||||
|
|
||||||
export function getUseRingrtcAdm(): boolean {
|
|
||||||
const localUseRingrtcAdm = window.storage.get('useRingrtcAdm');
|
|
||||||
if (localUseRingrtcAdm !== undefined) {
|
|
||||||
return localUseRingrtcAdm;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!RemoteConfig.isEnabled('desktop.internalUser')) {
|
|
||||||
if (isProduction(window.getVersion())) {
|
|
||||||
return RemoteConfig.isEnabled('desktop.calling.ringrtcAdmFull.3');
|
|
||||||
}
|
|
||||||
return RemoteConfig.isEnabled('desktop.calling.ringrtcAdmPreStable');
|
|
||||||
}
|
|
||||||
|
|
||||||
return RemoteConfig.isEnabled('desktop.calling.ringrtcAdmInternal');
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function setUseRingrtcAdm(value: boolean): Promise<void> {
|
|
||||||
await window.storage.put('useRingrtcAdm', value);
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function removeUseRingrtcAdm(): Promise<void> {
|
|
||||||
await window.storage.remove('useRingrtcAdm');
|
|
||||||
}
|
|
|
@ -30,10 +30,6 @@ import { initMessageCleanup } from '../../services/messageStateCleanup';
|
||||||
import { Environment, getEnvironment } from '../../environment';
|
import { Environment, getEnvironment } from '../../environment';
|
||||||
import { isProduction } from '../../util/version';
|
import { isProduction } from '../../util/version';
|
||||||
import { benchmarkConversationOpen } from '../../CI/benchmarkConversationOpen';
|
import { benchmarkConversationOpen } from '../../CI/benchmarkConversationOpen';
|
||||||
import {
|
|
||||||
removeUseRingrtcAdm,
|
|
||||||
setUseRingrtcAdm,
|
|
||||||
} from '../../util/ringrtc/ringrtcAdm';
|
|
||||||
|
|
||||||
const log = createLogger('start');
|
const log = createLogger('start');
|
||||||
|
|
||||||
|
@ -98,10 +94,6 @@ if (
|
||||||
name: K,
|
name: K,
|
||||||
value: StorageAccessType[K]
|
value: StorageAccessType[K]
|
||||||
) => window.storage.put(name, value),
|
) => window.storage.put(name, value),
|
||||||
removeUseRingrtcAdm: async () => {
|
|
||||||
await removeUseRingrtcAdm();
|
|
||||||
log.info('Restart to make ADM change take effect!');
|
|
||||||
},
|
|
||||||
setFlag: (name: keyof FeatureFlagType, value: boolean) => {
|
setFlag: (name: keyof FeatureFlagType, value: boolean) => {
|
||||||
if (!has(window.Flags, name)) {
|
if (!has(window.Flags, name)) {
|
||||||
return;
|
return;
|
||||||
|
@ -111,10 +103,6 @@ if (
|
||||||
setSfuUrl: (url: string) => {
|
setSfuUrl: (url: string) => {
|
||||||
window.Signal.Services.calling._sfuUrl = url;
|
window.Signal.Services.calling._sfuUrl = url;
|
||||||
},
|
},
|
||||||
setUseRingrtcAdm: async (value: boolean) => {
|
|
||||||
await setUseRingrtcAdm(value);
|
|
||||||
log.info('Restart to make ADM change take effect!');
|
|
||||||
},
|
|
||||||
setIceServerOverride: (
|
setIceServerOverride: (
|
||||||
override: GetIceServersResultType | string | undefined
|
override: GetIceServersResultType | string | undefined
|
||||||
) => {
|
) => {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue