implement wait_until_completed timeout

This commit is contained in:
yggverse 2025-08-10 07:23:38 +03:00
parent 7ba8623d99
commit d7a540f560
2 changed files with 16 additions and 1 deletions

View file

@ -120,4 +120,9 @@ pub struct Config {
/// Limit download speed (b/s)
#[arg(long)]
pub download_limit: Option<u32>,
/// Skip long-thinking connections,
/// try to handle the other hashes in this queue after `n` seconds
#[arg(long, default_value_t = 10)]
pub wait_until_completed: u64,
}

View file

@ -184,7 +184,17 @@ async fn main() -> Result<()> {
session.unpause(&mt).await?;
log::debug!("begin torrent `{i}` preload...");
// await for `preload_regex` files download to continue
mt.wait_until_completed().await?;
if let Err(e) = time::timeout(
Duration::from_secs(config.wait_until_completed),
mt.wait_until_completed(),
)
.await
{
log::debug!(
"skip awaiting the completion of preload `{i}` data (`{e}`)"
);
continue;
}
log::debug!("torrent `{i}` preload completed.");
// persist torrent bytes and preloaded content,
// cleanup tmp (see rqbit#408)