From f2eb869b028bbf8a54ce01f210aa035077e0c6fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Fri, 30 May 2025 07:49:58 -0700 Subject: [PATCH] FastAPIWebsocketTransport: don't initialize if a second StartFrame is received --- .../transports/network/fastapi_websocket.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/pipecat/transports/network/fastapi_websocket.py b/src/pipecat/transports/network/fastapi_websocket.py index f19bc0a9c..205fb8c9e 100644 --- a/src/pipecat/transports/network/fastapi_websocket.py +++ b/src/pipecat/transports/network/fastapi_websocket.py @@ -122,8 +122,17 @@ class FastAPIWebsocketInputTransport(BaseInputTransport): self._receive_task = None self._monitor_websocket_task = None + # Whether we have seen a StartFrame already. + self._initialized = False + async def start(self, frame: StartFrame): await super().start(frame) + + if self._initialized: + return + + self._initialized = True + await self._client.setup(frame) if self._params.serializer: await self._params.serializer.setup(frame) @@ -204,8 +213,17 @@ class FastAPIWebsocketOutputTransport(BaseOutputTransport): self._send_interval = 0 self._next_send_time = 0 + # Whether we have seen a StartFrame already. + self._initialized = False + async def start(self, frame: StartFrame): await super().start(frame) + + if self._initialized: + return + + self._initialized = True + await self._client.setup(frame) if self._params.serializer: await self._params.serializer.setup(frame)