Search Results for

    Show / Hide Table of Contents

    LiveSwitch 1.27 Release

    LiveSwitch 1.27 includes two significant infrastructure changes that require attention before upgrading:

    • .NET 10 — All LiveSwitch server services (Gateway, Media Server, Recording, and SIP Connector) now run on .NET 10 (LTS), keeping your deployment on a fully supported runtime ahead of the previous .NET version reaching end of support on November 10, 2026, and lowering CPU usage under load by roughly 4–5% for SFU broadcast and 2–3% for two-way SFU calls. Self-hosted customers must run the services on the .NET 10 runtime or update to the v1.27 container images, which are now based on Ubuntu 24.04 LTS.
    • PostgreSQL 12+ — PostgreSQL 11 and earlier are no longer supported. Upgrade your database server before updating LiveSwitch; there's no database migration to run and no schema changes, so the services start against your existing database as-is. If you connect over TLS, certificate trust behavior is unchanged, but test the connection in staging before rolling out to production.

    Release Notes for LiveSwitch Server v1.27

    1.27.0.22319

    Release date: July 31, 2026

    Client SDK

    Improvements
    • [LS1-3462] [Web] The example app now displays a remote mute indicator, so participants can see when another participant has muted their microphone.
    • [LS1-3733] [Web] The example app now shows audio and video mute state overlays on video tiles.
    Bug Fixes
    • [LS1-2613] [MAUI Android] Fixed an issue in the example app where backgrounding the app during a call caused video to freeze and the connection to reconnect on return. The example now runs the call in a foreground service while the app is in the background. Because Android requires each app to declare its own foreground service and lifecycle handling, this isn't something the SDK applies for you — see the MAUI Chat example for the pattern, or contact support for guidance on applying it to your own app.
    • [LS1-2876] [MAUI Android] Fixed an app crash when accepting the notification prompt while joining in Screen Share Only mode. Joining a Screen Share Only session now works reliably across P2P and SFU connections.
    • [LS1-3472] [Unity iOS] Fixed an issue where call audio played through the earpiece instead of the loudspeaker when joining an SFU call, making calls hard to hear. Audio now routes to the loudspeaker by default.
    • [LS1-3522] [MAUI Android] Fixed the device screen turning off and going to sleep during an active call, which could interrupt video and audio. The screen now stays awake for the duration of a call.
    • [LS1-3523] [MAUI Android] Fixed local self-video freezing after the app returned from the background. The camera now resumes automatically on return to the foreground.
    • [LS1-3670] Fixed an issue where peer-to-peer calls could unnecessarily fall back to TURN relay even when a direct connection between clients was available, resulting in avoidable relay bandwidth usage and added connection latency.
    • [LS1-3678] [Web] Fixed an issue in P2P mode where the answer SDP always contained sendrecv regardless of the joining client's configured direction (receive-only or send-only), causing setRemoteDescription to fail with an InvalidAccessError.
    • [LS1-3694] [.NET] Fixed an issue where the SDK NuGet packages were missing the native OpenSSL library (libopensslfm.dylib) on macOS, causing applications referencing SDK 1.23.0 or later to fail at runtime with a missing native library error.
    • [LS1-3705] [Web] Fixed an issue in the example app where muting audio or video after switching from SFU to MCU mode would throw an error instead of updating the connection.
    • [LS1-3706] [Web] Fixed several connection lifecycle issues in the example app, including stale connection references and missing cleanup.
    • [LS1-3723] Fixed an issue where channel update messages could be silently discarded, so OnRemoteClientUpdate never fired for other participants even though the sending client's update() call succeeded.
    • [LS1-3739] [Web] Fixed an issue in the example app where audio and video mute buttons had no effect in P2P mode before any peer had joined the channel.
    • [LS1-3742] Fixed a race condition where calling Update() twice in rapid succession (e.g. muting audio and video within ~100ms of each other) could silently drop one of the state changes.
    • [LS1-3744] Fixed an issue where a connection's reported maximum video resolution could incorrectly reflect the send stream dimensions instead of the larger receive stream dimensions.
    • [LS1-3746] [Unity] Fixed an issue where libopensslfm_stub.c was missing from the package, causing LNK2019 linker errors when building IL2CPP targets.
    • [LS1-3747] [MAUI iOS] Fixed an issue in the example app where backgrounding the app during a call dropped audio and caused the connection to reconnect on return. The example now declares background audio/VoIP modes and pauses/resumes the camera on background/foreground transitions. As with the Android fix above, this is an application-level change you'll need to replicate yourself — see the MAUI Chat example for the pattern, or contact support for guidance on applying it to your own app.

    All Server Services

    Breaking Changes
    • [LS1-3438] All LiveSwitch server services — Gateway, Media Server, Recording, and SIP Connector — now run on .NET 10 (LTS) on Ubuntu 24.04 LTS-based container images, and now require PostgreSQL 12 or later. Upgrade action: self-hosted customers must run the services on the .NET 10 runtime or update to the v1.27 container images.
    Improvements
    • [LS1-3510] Expanded internal dependency vulnerability scanning to cover transitive dependencies, not just direct references, reducing the risk of known CVEs shipping in LiveSwitch Server releases.
    Bug Fixes
    • [LS1-3788] [LS1-3792] Updated dependencies to address high-severity security vulnerabilities in third-party libraries.

    Gateway

    New Features
    • [LS1-3758] Added a lightweight recording-status endpoint (GET /admin/api/v1.0/applications/{applicationId}/channels/{channelId}/recording) to the REST API that returns whether recording is active on a channel, without the overhead of a full Media Server report.
    Improvements
    • [LS1-3089] Replaced a retired authentication library used for admin dashboard sign-in with a supported, actively maintained OAuth server, resolving a security advisory (GHSA-55p7-v223-x366). Admin usernames, passwords, and API keys are unchanged. Dashboard users will be signed out once after upgrading and will need to sign in again — a one-time event that doesn't affect any accounts or credentials; browser-only dashboard users need no other action.
    Bug Fixes
    • [LS1-3715] Fixed an issue where zombie WebSocket connections were logged continuously as Potential WebSocket Timeout instead of being closed.
    • [LS1-3721] Fixed a rare startup issue where, if webhook processing initialized on multiple requests at exactly the same time during a cold start, the Gateway could stall or briefly apply an incomplete set of webhook rules.

    Media Server

    Bug Fixes
    • [LS1-3704] Fixed an issue where MCU receive-only clients would see permanently degraded, blocky video after all receivers disconnected and rejoined a session, because the server failed to request a new keyframe from the upstream publisher.
    • [LS1-3722] Fixed a gradual memory leak on the Media Server cluster data path that could occur under certain error conditions during long-running sessions, improving stability for clustered deployments under sustained load.
    • [LS1-3733] Fixed an issue where SFU downstream connections did not reflect the upstream participant's muted audio/video state until the first connection update after connecting.

    1.27.1.22648

    Release date: October 09, 2026

    Client SDK

    Bug Fixes
    • [LS1-3771] [Web] Fixed an issue where muting or unmuting local audio logged just "local" instead of a descriptive message with the track ID and mute state.
    • [LS1-3787] [Unity] Fixed a crash (SIGSEGV) in IL2CPP builds that occurred every time local video was muted while using WebCamTextureSource.
    • [LS1-3803] [Web] Fixed an issue on Android browsers where switching cameras could fail with NotReadableError: Could not start video source, depending on which cameras the device allows to be open at the same time. When this failure occurs, the SDK now releases the current camera and retries, and restores the previous camera if the switch still fails.
    • [LS1-3805] Fixed an issue where connections could time out with ConnectionNotEstablished during the DTLS handshake, even after an active candidate pair was found, on networks that silently drop large UDP packets such as VPN and IPsec paths. DTLS handshake packets were sized for a 1500-byte MTU. DTLS now uses a 1280-byte MTU on all platforms, matching the conservative sizing browsers use.
    • [LS1-3811] [iOS] [macOS] Fixed register failing with "Could not parse token." when the token was created by a standard JWT library that uses unpadded base64url encoding, a regression introduced in 1.26. The Android and Web SDKs also now accept base64url tokens containing - or _ characters.

    All Server Services

    New Features
    • [LS1-3806] LiveSwitch services can now authenticate to Redis with a client certificate (mutual TLS), for Redis servers that require it. Add the new CacheClientCertificate section to each service's configuration with a PEM certificate and key, or a PFX file. Intermediate CA certificates included in the certificate file are sent along with the client certificate, so Redis only needs to trust your root CA. See Redis TLS and Client Certificates for details.
      • No change unless you opt in. Deployments that don't configure CacheClientCertificate behave exactly as before.
      • rediss:// connection strings are now supported for the Cache connection string.
      • Using a private CA? Install your root CA certificate in the server's or container image's trust store. If your CA doesn't publish a CRL or OCSP endpoint, add checkCertificateRevocation=false to the Cache connection string.

    Media Server

    Improvements
    • [LS1-3725] Removed unused reference assemblies from the Media Server Docker image that were causing security scanners to report false-positive CVEs.
    Bug Fixes
    • [LS1-3805] Fixed an issue where connections could time out with ConnectionNotEstablished during the DTLS handshake, even after an active candidate pair was found, on networks that silently drop large UDP packets such as VPN and IPsec paths. DTLS handshake packets were sized for a 1500-byte MTU. DTLS now uses a 1280-byte MTU on all platforms, matching the conservative sizing browsers use.

    In This Article
    Back to top Copyright © LiveSwitch Inc. All Rights Reserved.Documentation for LiveSwitch Version 1.27.1