open-webui/backend/open_webui/routers
Classic298 02b65ea582
fix: don't hang terminal proxy when one forwarding pump exits first (#25479)
The proxy gathered _client_to_upstream and _upstream_to_client with
return_exceptions=True. When upstream sends a graceful CLOSE,
_upstream_to_client returns but gather keeps waiting on
_client_to_upstream, which is blocked in ws.receive() until the browser
disconnects. The handler stays pending and the finally: session.close()
cleanup is deferred, leaking a ClientSession and an open browser socket.

Use asyncio.wait(return_when=FIRST_COMPLETED) and cancel the pending
sibling, so the proxy unwinds as soon as either direction finishes. The
pumps' bare except Exception already lets CancelledError (a BaseException)
propagate, so cancellation is clean and they need no change.

Fixes #25464

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 10:10:04 -07:00
..
analytics.py refac: modernize type annotations (PEP 604 / PEP 585) 2026-05-12 17:10:15 +09:00
audio.py refac 2026-05-31 14:59:28 -07:00
auths.py refac 2026-05-21 16:56:56 +04:00
automations.py refac: modernize type annotations (PEP 604 / PEP 585) 2026-05-12 17:10:15 +09:00
calendar.py fix: check destination calendar write access on event update (#24764) 2026-05-19 21:26:58 +04:00
channels.py refac 2026-05-19 20:44:38 +04:00
chats.py refac 2026-05-21 16:56:56 +04:00
configs.py refac: modernize type annotations (PEP 604 / PEP 585) 2026-05-12 17:10:15 +09:00
evaluations.py refactor: remove unused GET /evaluations/feedbacks/all endpoint (#24778) 2026-05-19 20:49:22 +04:00
files.py refac 2026-06-01 09:53:04 -07:00
folders.py refac: modernize type annotations (PEP 604 / PEP 585) 2026-05-12 17:10:15 +09:00
functions.py refac: modernize type annotations (PEP 604 / PEP 585) 2026-05-12 17:10:15 +09:00
groups.py refac 2026-05-14 13:12:59 +09:00
images.py refac 2026-05-14 02:40:20 +09:00
knowledge.py refac 2026-05-28 17:24:33 -05:00
memories.py refac 2026-05-21 14:01:57 +04:00
models.py fix: harden model profile image against SVG stored XSS (#25060) 2026-05-28 17:41:55 -05:00
notes.py refac: modernize type annotations (PEP 604 / PEP 585) 2026-05-12 17:10:15 +09:00
ollama.py refac 2026-05-31 18:42:28 -07:00
openai.py fix: move bypass_system_prompt off query parameter onto request.state (#25156) 2026-05-31 14:53:53 -07:00
pipelines.py refac: modernize type annotations (PEP 604 / PEP 585) 2026-05-12 17:10:15 +09:00
prompts.py refac 2026-05-21 14:01:57 +04:00
retrieval.py refac 2026-05-31 15:10:48 -07:00
scim.py refac: modernize type annotations (PEP 604 / PEP 585) 2026-05-12 17:10:15 +09:00
skills.py refac: modernize type annotations (PEP 604 / PEP 585) 2026-05-12 17:10:15 +09:00
tasks.py refac 2026-05-14 13:19:00 +09:00
terminals.py fix: don't hang terminal proxy when one forwarding pump exits first (#25479) 2026-06-01 10:10:04 -07:00
tools.py refac 2026-05-21 14:01:57 +04:00
users.py refac 2026-05-21 15:29:49 +04:00
utils.py refac 2026-05-21 16:25:25 +04:00