Skip to content

Commit ba06494

Browse files
committed
fix: explicitly cancel drain_task on subscriber arrival
stop() handles current cleanup, but if aiortc changes start() to be long-lived, the drain_task could leak. Cancel it defensively.
1 parent d1ca6fb commit ba06494

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

getstream/video/rtc/pc.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,10 +205,11 @@ def add_track_subscriber(
205205
"""Add a new subscriber to an existing track's MediaRelay."""
206206
track_data = self.track_map.get(track_id)
207207

208-
blackhole, _ = self._video_blackholes.pop(track_id, (None, None))
208+
blackhole, drain_task = self._video_blackholes.pop(track_id, (None, None))
209209

210-
if blackhole:
210+
if blackhole and drain_task:
211211
task = asyncio.create_task(blackhole.stop())
212+
drain_task.cancel() # safety net if start() becomes long-lived in future aiortc
212213
self._background_tasks.add(task)
213214
task.add_done_callback(self._background_tasks.discard)
214215

0 commit comments

Comments
 (0)