From 45ebd042ac3a5a1bf7822996e0f64c0af0e5309f Mon Sep 17 00:00:00 2001 From: James Hush Date: Thu, 2 Oct 2025 14:11:14 +0800 Subject: [PATCH] Fix: Reset _closing flag on WebSocket reconnection to ensure on_client_disconnected fires The on_client_disconnected event handler was not firing after the first disconnection in long-running containers. The _closing flag was set to True on first disconnect and never reset, preventing subsequent disconnect events from being triggered. This fix resets the _closing flag to False in the setup() method, ensuring each new connection starts with a clean state. --- src/pipecat/transports/websocket/fastapi.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pipecat/transports/websocket/fastapi.py b/src/pipecat/transports/websocket/fastapi.py index 28d08abcd..22bd43b85 100644 --- a/src/pipecat/transports/websocket/fastapi.py +++ b/src/pipecat/transports/websocket/fastapi.py @@ -105,6 +105,8 @@ class FastAPIWebsocketClient: _: The start frame (unused). """ self._leave_counter += 1 + # Reset closing flag when setting up a new connection + self._closing = False def receive(self) -> typing.AsyncIterator[bytes | str]: """Get an async iterator for receiving WebSocket messages.