From 7e84264a06692acbb243a39eec50d62c4f9d2f4a Mon Sep 17 00:00:00 2001 From: Adrian Niculescu <15037449+adrian-niculescu@users.noreply.github.com> Date: Mon, 24 Nov 2025 23:32:54 +0200 Subject: [PATCH] Fixed thread visibility issues in SignalClient. Added @Volatile to isConnected, currentWs, and isReconnecting fields that are accessed from multiple threads (OkHttp callbacks and IO dispatcher coroutines). --- .changeset/fix-signal-client-volatile.md | 5 +++++ .../src/main/java/io/livekit/android/room/SignalClient.kt | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 .changeset/fix-signal-client-volatile.md diff --git a/.changeset/fix-signal-client-volatile.md b/.changeset/fix-signal-client-volatile.md new file mode 100644 index 00000000..983f3399 --- /dev/null +++ b/.changeset/fix-signal-client-volatile.md @@ -0,0 +1,5 @@ +--- +"client-sdk-android": patch +--- + +Fix thread visibility issues in SignalClient that could cause messages to be silently dropped. \ No newline at end of file diff --git a/livekit-android-sdk/src/main/java/io/livekit/android/room/SignalClient.kt b/livekit-android-sdk/src/main/java/io/livekit/android/room/SignalClient.kt index c1a472da..9a844c8b 100644 --- a/livekit-android-sdk/src/main/java/io/livekit/android/room/SignalClient.kt +++ b/livekit-android-sdk/src/main/java/io/livekit/android/room/SignalClient.kt @@ -79,9 +79,14 @@ constructor( private val ioDispatcher: CoroutineDispatcher, private val networkInfo: NetworkInfo, ) : WebSocketListener() { + @Volatile var isConnected = false private set + + @Volatile private var currentWs: WebSocket? = null + + @Volatile private var isReconnecting: Boolean = false var listener: Listener? = null internal var serverVersion: Semver? = null