Fixing a race condition when cleaning up the daily transport.

This commit is contained in:
filipi87
2026-05-07 11:29:57 -03:00
parent cacde00e26
commit 5f256e241c

View File

@@ -526,6 +526,7 @@ class DailyTransportClient(EventHandler):
self._joined = False
self._joined_event = asyncio.Event()
self._leave_counter = 0
self._cleanup_counter = 0
self._task_manager: BaseTaskManager | None = None
@@ -741,6 +742,7 @@ class DailyTransportClient(EventHandler):
Args:
setup: The frame processor setup configuration.
"""
self._cleanup_counter += 1
if self._task_manager:
return
@@ -754,6 +756,12 @@ class DailyTransportClient(EventHandler):
async def cleanup(self):
"""Cleanup client resources and cancel tasks."""
# Decrement cleanup counter. DailyInputTransport and DailyOutputTransport
# share this client and both call cleanup(), so only run on the last call.
self._cleanup_counter -= 1
if self._cleanup_counter > 0:
return
if self._event_task and self._task_manager:
await self._task_manager.cancel_task(self._event_task)
self._event_task = None