diff options
| author | tranch <tranch.xiao@gmail.com> | 2026-05-07 23:54:28 +0800 |
|---|---|---|
| committer | tranch <tranch.xiao@gmail.com> | 2026-05-08 00:13:26 +0800 |
| commit | d7810e84657fa8c3cf8ec94f047b72c9e109d178 (patch) | |
| tree | e9b34ea0557da0a56ae4d3b7c1dfb64e3cf30938 /mock_decky_server.py | |
| parent | a0376dbbe409a3d71405e9c8c60f31ee5d8cd341 (diff) | |
| download | accelerator-installer-d7810e84657fa8c3cf8ec94f047b72c9e109d178.tar.gz accelerator-installer-d7810e84657fa8c3cf8ec94f047b72c9e109d178.zip | |
Previously, on the plugin_download_finish event we only broke out of the
receive loop when 'confirmed' was False. In the normal flow 'confirmed'
is always True, so the loop kept waiting for a REPLY whose 'result' was
non-None. When the server returns 'result: null' (a common success
reply), no branch matched and the loop blocked forever on client.recv(),
making the installer appear successful but never exit.
The download_finish handler now breaks unconditionally, since the event
itself already indicates a completed install.
Also add timeout handling to the receive loop:
- IDLE_TIMEOUT: max gap between any two server messages, guards against
silent server stalls.
- OVERALL_TIMEOUT: hard upper bound on the entire install as a fallback.
Both are enforced by wrapping client.recv() with asyncio.wait_for; on
timeout a TimeoutError is raised and propagates after the connection is
cleanly closed in the finally block.
Co-authored-by: llm-git <llm-git@ttll.de>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Diffstat (limited to 'mock_decky_server.py')
0 files changed, 0 insertions, 0 deletions
