A download that stalls partway stops every scan and download, and the daemon still reports healthy #152
Reference in New Issue
Block a user
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?
Found in a code audit on 2026-10-09.
The client downloads use (
ctx.client,src/main.rs:291-296) has a connect timeout and nothing else, on purpose so a long download is not cut off (#108). But nothing bounds a read either: a server that starts sending a file and then stops, without closing the connection (a half-open connection, a stalled CDN), leavesstream.next().awaitindownload::downloadwaiting for good.Downloads run on the single worker, one job at a time, so every later scan and download waits behind it. The healthcheck answers
statusitself and stays(healthy)throughout (CLAUDE.md says as much), so nothing says the daemon has stopped working; only the absence ofscan completelines would.Fix: a read timeout on that client (
ClientBuilder::read_timeout), which fires only when no bytes arrive for that long and so leaves long downloads alone.Fixed in
d5edead: the download client has a 2-minute read timeout, which fires only when no bytes arrive, so a long download is untouched and a stalled one fails instead of holding the worker. Deployed as 0.10.3-dev on 2026-10-09.