[pull] master from jitsi:master - #836
Merged
Merged
Conversation
Wire up the breakout MUC component in the Docker test config and add an 8-test Mocha integration spec covering create, remove, rename, access control, and non-moderator authorization for mod_muc_breakout_rooms. The module excludes Prosody admin occupants (focus) from update broadcasts, so tests use a JWT moderator (context.user.moderator=true) as both the command sender and broadcast receiver.
… foreign VirtualHosts The `c2s-session-updated` hook in mod_auth_token.lua is registered globally (`module:hook_global`), so it fires on every VirtualHost instance of the module — including ones with a different JWT algorithm (e.g. hs256.localhost). When a `localhost` session undergoes SMACKS resume, the `hs256.localhost` instance entered the cross-host branch, tried to re-verify the RS256 token with its HS256 verifier, failed, and called `event.session:close()` — killing the resumed session before `<resumed>` could be sent. The fix: skip the cross-host verification path when `from_session._jitsi_auth_done` is already true, which means the from_session was already authenticated by its own token-auth module. Only anonymous-host sessions (which never set this flag) legitimately need a foreign module to run first-stage auth on their behalf. test(prosody): add SMACKS session resume integration test Regression test for eb43cf6 ("fix(breakout-rooms): don't clear jitsi_breakout_main_jid on smacks resume"): - Moderator joins the main room (jicofo/focus joins first, matching the real-life flow where Jicofo creates the breakout room on the component). - A breakout room is registered via OP_ADD. - Focus joins the breakout room to physically create it (`restrict_room_creation=true` is kept on the breakout component, so only Prosody admins like focus@auth.localhost can create rooms). - The moderator's WebSocket is torn down with ws.terminate() (TCP RST → SMACKS hibernation, not session destruction). - The reconnect URL carries `?previd=<smacks-id>` so that mod_auth_token preserves the UUID across SASL, allowing mod_smacks to find and resume the hibernating session. - After resume, the moderator joins the breakout room. Without eb43cf6 the jitsi_breakout_main_jid field would be nil and the join would return not-allowed. Also adds dropConnection() / waitForReconnect() helpers and a smId getter to the XmppTestClient wrapper.
* feat: Request an in-place ICE restart when the network changes Fires an in-place ICE restart on its own when the mobile OS reports a network change, instead of waiting for ICE to actually fail. This is a proactive make-before-break: the bridge keeps carrying media on the established path while the new one comes up, so it is safe to request whenever the local address the session was set up on may have gone stale. Wired into base/conference/middleware.native.ts on SET_NETWORK_INFO. New config flag enableIceRestartOnNetworkChange (on by default, has no effect unless enableIceRestart is also on). Treats a reconnect after an offline gap as a network change, even when the address ends up identical to the pre-outage baseline (for example the same DHCP lease on the same wifi network). Without this, a device that goes offline and reconnects to the same network would look unchanged to a plain address comparison, even though the interface genuinely went down and came back up, and any ICE candidates gathered on it are stale regardless of whether the address string still matches. Verified end to end on a real device against a boris3 standalone: wifi off for about 20 seconds, then back on to the same network and address. JVB completed the resulting in-place restart (generation 2, cutover in 801ms). See ~/claude/ice-restart/mobile-test-2026-08-13-wifi-toggle.md for the full transcript. * refactor: Reference the real IceRestartReason enum for the network-change trigger Follow-up from a review comment on this PR. lib-jitsi-meet now exposes IceRestartReason (jitsi/lib-jitsi-meet#3089) on JitsiMeetJS.constants (jitsi/lib-jitsi-meet#3090, since this package ships no types and every other enum jitsi-meet consumes goes through JitsiMeetJS.constants/ .errors/.events rather than a direct module import). Re-export it as JitsiIceRestartReason and pass JitsiIceRestartReason.NETWORK_CHANGE instead of the bare string 'network-change'. Also tighten IJitsiConference.restartJvbIce's signature to the known reason values, since the shim interface still can't import lib-jitsi-meet's real type.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )