Skip to content

Commit 151baf7

Browse files
put ensurePublisherConnected into a try {} catch {} (#891)
* put ensurePublisherConnected into a try {} catch {} * fix the build
1 parent c825e76 commit 151baf7

2 files changed

Lines changed: 22 additions & 2 deletions

File tree

livekit-android-sdk/src/main/java/io/livekit/android/room/RTCEngine.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -694,7 +694,11 @@ internal constructor(
694694

695695
@CheckResult
696696
internal suspend fun sendData(dataPacket: LivekitModels.DataPacket): Result<Unit> {
697-
ensurePublisherConnected(dataPacket.kind)
697+
try {
698+
ensurePublisherConnected(dataPacket.kind)
699+
} catch (e: Exception) {
700+
return Result.failure(e)
701+
}
698702

699703
fun sendDataImpl(dataPacket: LivekitModels.DataPacket): Result<Unit> {
700704
try {

livekit-android-test/src/test/java/io/livekit/android/room/participant/LocalParticipantMockE2ETest.kt

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2023-2025 LiveKit, Inc.
2+
* Copyright 2023-2026 LiveKit, Inc.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -26,6 +26,7 @@ import io.livekit.android.events.ParticipantEvent
2626
import io.livekit.android.events.RoomEvent
2727
import io.livekit.android.room.DefaultsManager
2828
import io.livekit.android.room.RTCEngine
29+
import io.livekit.android.room.RoomException
2930
import io.livekit.android.room.track.LocalVideoTrack
3031
import io.livekit.android.room.track.LocalVideoTrackOptions
3132
import io.livekit.android.room.track.ScreenSharePresets
@@ -879,4 +880,19 @@ class LocalParticipantMockE2ETest : MockE2ETest() {
879880

880881
assertTrue(headerPacket.user.payload.toByteArray().contentEquals(data))
881882
}
883+
884+
@Test
885+
fun publishDataReturnsFailureWhenPublisherChannelIsMissing() = runTest {
886+
connect()
887+
888+
val rtcEngine = component.rtcEngine()
889+
val reliableDataChannelField = RTCEngine::class.java.getDeclaredField("reliableDataChannel")
890+
reliableDataChannelField.isAccessible = true
891+
reliableDataChannelField.set(rtcEngine, null)
892+
893+
val result = room.localParticipant.publishData("hello".toByteArray())
894+
895+
assertTrue(result.isFailure)
896+
assertTrue(result.exceptionOrNull() is RoomException.ConnectException)
897+
}
882898
}

0 commit comments

Comments
 (0)