diff --git a/.changeset/fix-track-bitrates-race-condition.md b/.changeset/fix-track-bitrates-race-condition.md new file mode 100644 index 00000000..a992d1bd --- /dev/null +++ b/.changeset/fix-track-bitrates-race-condition.md @@ -0,0 +1,5 @@ +--- +"client-sdk-android": patch +--- + +Fixed race condition in `PeerConnectionTransport.trackBitrates` by ensuring writes happen on the RTC thread. \ No newline at end of file diff --git a/livekit-android-sdk/src/main/java/io/livekit/android/room/PeerConnectionTransport.kt b/livekit-android-sdk/src/main/java/io/livekit/android/room/PeerConnectionTransport.kt index 8d81da49..07f6c778 100644 --- a/livekit-android-sdk/src/main/java/io/livekit/android/room/PeerConnectionTransport.kt +++ b/livekit-android-sdk/src/main/java/io/livekit/android/room/PeerConnectionTransport.kt @@ -318,11 +318,15 @@ constructor( } fun registerTrackBitrateInfo(cid: String, trackBitrateInfo: TrackBitrateInfo) { - trackBitrates[TrackBitrateInfoKey.Cid(cid)] = trackBitrateInfo + executeRTCIfNotClosed { + trackBitrates[TrackBitrateInfoKey.Cid(cid)] = trackBitrateInfo + } } fun registerTrackBitrateInfo(transceiver: RtpTransceiver, trackBitrateInfo: TrackBitrateInfo) { - trackBitrates[TrackBitrateInfoKey.Transceiver(transceiver)] = trackBitrateInfo + executeRTCIfNotClosed { + trackBitrates[TrackBitrateInfoKey.Transceiver(transceiver)] = trackBitrateInfo + } } suspend fun isConnected(): Boolean {