mirror of
https://github.com/Glitchy-Sheep/boosty-downloader.git
synced 2026-10-14 21:33:23 +00:00
[PR #131] [MERGED] [downloader] Make network waits finite so a silent server cannot hang #135
Labels
No labels
api-drift
bug
ci
documentation
enhancement
enhancement
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Glitchy-Sheep/boosty-downloader#135
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/Glitchy-Sheep/boosty-downloader/pull/131
Author: @Glitchy-Sheep
Created: 8/9/2026
Status: ✅ Merged
Merged: 8/9/2026
Merged by: @Glitchy-Sheep
Base:
main← Head:fix/network-timeouts📝 Commits (1)
f507675fix: 🐛 Network waits are finite - a silent server cannot hang the app📊 Changes
4 files changed (+18 additions, -3 deletions)
View changed files
📝
CHANGELOG.md(+1 -0)📝
boosty_downloader/src/application/di/app_environment.py(+6 -1)📝
boosty_downloader/src/application/di/initialized_app.py(+3 -1)📝
boosty_downloader/src/infrastructure/update_checker/pypi_checker.py(+8 -1)📄 Description
Summary
Two network calls had no time limit. A server that goes quiet without closing the connection froze the app forever - no error, no retry, just a progress bar stuck at 43% until the user notices in the morning.
Problem
ClientTimeout(total=None)and nothing else: a connection that stops sending data is waited on foreverurlopenwith no timeout: with PyPI unreachable (firewall, broken DNS) every command froze before doing any workFix
failed_downloads.log, then the failure-streak stop if everything is downasyncio.to_thread)Before / After
Before: wifi dies at 2am without closing the connection - the run is frozen until morning, nothing in the logs.
After: 90 seconds of silence turn into a retryable error; the night run either recovers by itself or stops with a diagnosis and resumes from cache.
Verification
sock_readlimit (SocketTimeoutError), same for an unroutable address; no hangtask cigreen: checks, 64 unit tests, 6 live integration tests, buildNotes
30 == 30has no failure story🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.