Give up a download after two minutes without data (#152)
The download client had a connect timeout and nothing else, so that a long download is never cut off (#108). But nothing bounded a read either: a server that stops sending partway without closing the connection left the download waiting for good, on the one worker, with every scan and download behind it, while the healthcheck, which the socket answers itself, went on reading healthy. A read timeout fires only when no bytes arrive, so a long download is untouched. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -293,6 +293,9 @@ async fn main() -> Result<()> {
|
||||
.user_agent(concat!("ipx/", env!("CARGO_PKG_VERSION")))
|
||||
// Connecting only, so it bounds a download's start, not a long download (#108).
|
||||
.connect_timeout(std::time::Duration::from_secs(10))
|
||||
// Two minutes without a byte is a stalled download, however long it is: unbounded, one
|
||||
// held the worker, and every scan behind it, for good, while the daemon read healthy (#152).
|
||||
.read_timeout(std::time::Duration::from_secs(120))
|
||||
.build()?,
|
||||
feed_client: reqwest::Client::builder()
|
||||
.user_agent(concat!("ipx/", env!("CARGO_PKG_VERSION")))
|
||||
|
||||
Reference in New Issue
Block a user