From 31f744799453f492664f2deaf72ca552d84f567a Mon Sep 17 00:00:00 2001 From: Aditya-mu <152737658+Aditya-mu@users.noreply.github.com> Date: Fri, 3 Jul 2026 18:26:25 -0700 Subject: [PATCH 1/2] fix: handle WebSocket close race in run_sender Adds conn.running check before each send and wraps send_bytes/ send_message in try/except so a disconnect mid-drain exits cleanly rather than throwing RuntimeError. --- server-components/server/session/workers.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/server-components/server/session/workers.py b/server-components/server/session/workers.py index a1452c6..2f02be9 100644 --- a/server-components/server/session/workers.py +++ b/server-components/server/session/workers.py @@ -275,10 +275,16 @@ async def run_sender(conn: Connection) -> None: conn.frame_ready.clear() while not conn.frame_queue.empty(): payload = conn.frame_queue.get_nowait() - if isinstance(payload, bytes): - await conn.websocket.send_bytes(payload) - else: - await conn.send_message(payload) + if not conn.running: + break + try: + if isinstance(payload, bytes): + await conn.websocket.send_bytes(payload) + else: + await conn.send_message(payload) + except Exception: + conn.running = False + return except Exception: logger.exception("Sender error") conn.running = False From f08c609f20773a93b8cd15f67f68823bf588243a Mon Sep 17 00:00:00 2001 From: Aditya-mu <152737658+Aditya-mu@users.noreply.github.com> Date: Tue, 7 Jul 2026 01:13:59 -0700 Subject: [PATCH 2/2] fix: suppress BLE001 lint warning in run_sender --- server-components/server/session/workers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server-components/server/session/workers.py b/server-components/server/session/workers.py index 2f02be9..50be14a 100644 --- a/server-components/server/session/workers.py +++ b/server-components/server/session/workers.py @@ -282,7 +282,7 @@ async def run_sender(conn: Connection) -> None: await conn.websocket.send_bytes(payload) else: await conn.send_message(payload) - except Exception: + except Exception: # noqa: BLE001 conn.running = False return except Exception: