From 0c59f7e83ba147d596b276a925155828bba91774 Mon Sep 17 00:00:00 2001 From: tamarafinogina Date: Thu, 27 Aug 2026 17:01:39 +0200 Subject: [PATCH 1/3] decrease video delay --- modules/e2ee-internxt/ManagedKeyHandler.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/e2ee-internxt/ManagedKeyHandler.ts b/modules/e2ee-internxt/ManagedKeyHandler.ts index 47b2a9264a..98932adf8f 100644 --- a/modules/e2ee-internxt/ManagedKeyHandler.ts +++ b/modules/e2ee-internxt/ManagedKeyHandler.ts @@ -968,6 +968,7 @@ export class ManagedKeyHandler extends Listenable { return; } this.enabled = enabled; + this.conference.setLocalParticipantProperty('e2ee.enabled', enabled.toString()); if (!this.initialized) { await this.init(); @@ -975,6 +976,7 @@ export class ManagedKeyHandler extends Listenable { if (enabled) { this.log('info', 'Enabling e2ee'); + this.conference.restartMediaSessions(); await this.enableE2E(); } @@ -983,8 +985,6 @@ export class ManagedKeyHandler extends Listenable { await this.disableE2E(); } - this.conference.setLocalParticipantProperty('e2ee.enabled', enabled.toString()); - this.conference.restartMediaSessions(); } async messageReceived(participant: JitsiParticipant, payload) { From d2fa0623991f8052200cd452ea9f952ec63f9c0c Mon Sep 17 00:00:00 2001 From: tamarafinogina Date: Thu, 27 Aug 2026 18:24:31 +0200 Subject: [PATCH 2/3] don't reload sessions if e2e is enabled --- modules/e2ee-internxt/ManagedKeyHandler.ts | 29 +++++++++++++++++++--- tests/mocks.ts | 18 +++++++++++--- 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/modules/e2ee-internxt/ManagedKeyHandler.ts b/modules/e2ee-internxt/ManagedKeyHandler.ts index 98932adf8f..3041149d4b 100644 --- a/modules/e2ee-internxt/ManagedKeyHandler.ts +++ b/modules/e2ee-internxt/ManagedKeyHandler.ts @@ -5,6 +5,7 @@ import { JitsiConferenceEvents } from '../../JitsiConferenceEvents'; import JitsiParticipant from '../../JitsiParticipant'; import { RTCEvents } from '../../service/RTC/RTCEvents'; import JitsiLocalTrack from '../RTC/JitsiLocalTrack'; +import JitsiRemoteTrack from '../RTC/JitsiRemoteTrack'; import JitsiTrack from '../RTC/JitsiTrack'; import TraceablePeerConnection from '../RTC/TraceablePeerConnection'; import browser from '../browser'; @@ -71,7 +72,7 @@ export class ManagedKeyHandler extends Listenable { onConferenceLeft: (() => void) | undefined; onMediaSessionStarted: ((session: JingleSessionPC) => void) | undefined; onTrackAdded: ((track: JitsiTrack) => void) | undefined; - onRemoteTrackAdded: ((track: JitsiLocalTrack, tpc: TraceablePeerConnection) => void) | undefined; + onRemoteTrackAdded: ((track: JitsiRemoteTrack, tpc: TraceablePeerConnection) => void) | undefined; onTrackMuteChanged: ((track: JitsiLocalTrack) => void) | undefined; onSasUpdated: ((sasStr: string) => void) | undefined; @@ -253,7 +254,7 @@ export class ManagedKeyHandler extends Listenable { * @private */ private _setupReceiverE2EEForTrack( - track: JitsiLocalTrack, + track: JitsiRemoteTrack, tpc: TraceablePeerConnection, ) { if (!this.enabled) { @@ -765,6 +766,24 @@ export class ManagedKeyHandler extends Listenable { console[level](`E2E: User ${this.myID}: ${message}`); } + private _setupE2EEForExistingTracks() { + for (const session of this.conference.getMediaSessions()) { + const pc = session.peerconnection; + + if (!pc) { + continue; + } + + for (const track of this.conference.getLocalTracks()) { + this._setupSenderE2EEForTrack(session, track); + } + + for (const track of pc.getRemoteTracks()) { + this._setupReceiverE2EEForTrack(track, pc); + } + } + } + _onParticipantJoined(id: string) { this._queueParticipantEvent('join', id); } @@ -968,21 +987,23 @@ export class ManagedKeyHandler extends Listenable { return; } this.enabled = enabled; - this.conference.setLocalParticipantProperty('e2ee.enabled', enabled.toString()); if (!this.initialized) { await this.init(); } + this.conference.setLocalParticipantProperty('e2ee.enabled', enabled.toString()); + if (enabled) { this.log('info', 'Enabling e2ee'); - this.conference.restartMediaSessions(); await this.enableE2E(); + this._setupE2EEForExistingTracks(); } if (!enabled) { this.log('info', 'Disabling e2ee'); await this.disableE2E(); + this.conference.restartMediaSessions(); } } diff --git a/tests/mocks.ts b/tests/mocks.ts index 998a882f0f..2cb506ddcb 100644 --- a/tests/mocks.ts +++ b/tests/mocks.ts @@ -115,6 +115,10 @@ export class XmppServerMock { const pId = keyHandler.conference.myUserId(); + if (!pId) { + throw new Error('Mock got undefined user ID'); + } + if (!this.listeners.has(pId)) { this.listeners.forEach((existingHandler, _id) => { existingHandler._onParticipantJoined(pId); @@ -153,10 +157,14 @@ export class XmppServerMock { sendMessage(myId: string, pId: string, payload: any) { this.listeners.forEach((keyHandler, id) => { if (id === pId) { - keyHandler.messageReceived( - this.participants.get(myId), - payload, - ); + const participant = this.participants.get(myId); + + if (participant) { + keyHandler.messageReceived( + participant, + payload, + ); + } } }); } @@ -182,6 +190,8 @@ export async function createInitializedManagedKeyHandler( const mockRTC = new RTC(conferenceMock); when(conferenceMock.rtc).thenReturn(mockRTC); + when(conferenceMock.getMediaSessions()).thenReturn([]); + when(conferenceMock.getLocalTracks()).thenReturn([]); const eventEmitterMock = mock(); From 4d4cdfe2efd5484f3409a1517151026bc900c21c Mon Sep 17 00:00:00 2001 From: tamarafinogina Date: Fri, 28 Aug 2026 10:15:42 +0200 Subject: [PATCH 3/3] add log, set property after --- JitsiConference.ts | 1 + modules/e2ee-internxt/ManagedKeyHandler.ts | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/JitsiConference.ts b/JitsiConference.ts index 9b80aec443..ca8f634b41 100644 --- a/JitsiConference.ts +++ b/JitsiConference.ts @@ -2482,6 +2482,7 @@ export default class JitsiConference extends Listenable { } public restartMediaSessions() { + console.trace('[restartMediaSessions] caller'); this._restartMediaSessions(); } diff --git a/modules/e2ee-internxt/ManagedKeyHandler.ts b/modules/e2ee-internxt/ManagedKeyHandler.ts index 3041149d4b..dc6e0a5b1a 100644 --- a/modules/e2ee-internxt/ManagedKeyHandler.ts +++ b/modules/e2ee-internxt/ManagedKeyHandler.ts @@ -992,8 +992,6 @@ export class ManagedKeyHandler extends Listenable { await this.init(); } - this.conference.setLocalParticipantProperty('e2ee.enabled', enabled.toString()); - if (enabled) { this.log('info', 'Enabling e2ee'); await this.enableE2E(); @@ -1006,6 +1004,8 @@ export class ManagedKeyHandler extends Listenable { this.conference.restartMediaSessions(); } + this.conference.setLocalParticipantProperty('e2ee.enabled', enabled.toString()); + } async messageReceived(participant: JitsiParticipant, payload) { diff --git a/package.json b/package.json index ea1edfb0d9..e0cca47f12 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lib-meet", - "version": "1.0.3", + "version": "1.0.3-test", "description": "JS library for accessing Jitsi server side deployments", "repository": { "type": "git",