From cd74e6d1266c5a623f9c143d7efa6cb4d6f3f0c9 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Tue, 20 Oct 2026 21:45:54 +0200 Subject: [PATCH] fix: dropped realtime call sometimes shows "Voice connection failed" (#32730) When the voice provider ended a realtime call, the overlay sometimes said "Voice connection failed" instead of "Voice provider connection closed". It happened when microphone audio reached the server at the same moment the provider hung up, so forwarding that audio failed and the generic error was shown. Anything that fails to reach the provider because it just closed the connection now reports that the provider closed the call. Fixes #32729 --- backend/open_webui/routers/audio/realtime.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/backend/open_webui/routers/audio/realtime.py b/backend/open_webui/routers/audio/realtime.py index f51bb2324a..c9c506eb34 100644 --- a/backend/open_webui/routers/audio/realtime.py +++ b/backend/open_webui/routers/audio/realtime.py @@ -549,6 +549,9 @@ async def realtime_call(ws: WebSocket): detail = ( str(exc) if type(exc) is ValueError + # A send can still fail on the provider connection that just closed. + else 'Voice provider connection closed' + if isinstance(exc, aiohttp.ClientConnectionResetError) else ('Voice connection timed out' if isinstance(exc, TimeoutError) else 'Voice connection failed') ) log.info('Bridge closed: user_id=%s error_type=%s', user.id if user else None, type(exc).__name__)