diff --git a/livekit-rtc/livekit/rtc/room.py b/livekit-rtc/livekit/rtc/room.py index e3619d9c..044034f9 100644 --- a/livekit-rtc/livekit/rtc/room.py +++ b/livekit-rtc/livekit/rtc/room.py @@ -557,6 +557,12 @@ def on_participant_connected(participant): # start listening to room events self._task = self._loop.create_task(self._listen_task()) + # unsubscribe from the FFI queue once the listen task ends. + # disconnect() unsubscribes too, but it early-returns when the + # room is already disconnected (e.g. removed remotely). + ffi_queue = self._ffi_queue + self._task.add_done_callback(lambda _: FfiClient.instance.queue.unsubscribe(ffi_queue)) + # Unblock the FFI server once this SDK is ready to receive room events. ready_req = proto_ffi.FfiRequest() ready_req.ready_for_room_event.room_handle = self._ffi_handle.handle