fix(downloads): harden queue and media retry controls

Add aria2 control epochs so delayed resume workers cannot unpause a transfer after a newer pause, remove, or reconfigure command wins.

Thread captured cookies into yt-dlp media runs, sanitize yt-dlp config values, reject malformed media headers, and preserve resumable media artifacts across transient retry backoff.

Cover the new queue epoch and media helper behavior with focused regression tests.
This commit is contained in:
NimBold
2026-07-04 18:55:22 +03:30
parent e5348d3213
commit a92d5689d7
3 changed files with 226 additions and 31 deletions
+12
View File
@@ -139,6 +139,18 @@ async fn ensure_aria2_permit_does_not_double_acquire() {
assert_eq!(mgr.available_permits(), 2);
}
#[tokio::test]
async fn aria2_control_epoch_invalidates_stale_resume_workers() {
let (mgr, _spawner) = make_manager(1);
let first_resume = mgr.next_aria2_control_epoch("a").await;
assert!(mgr.is_aria2_control_epoch_current("a", first_resume).await);
let pause = mgr.next_aria2_control_epoch("a").await;
assert_ne!(pause, first_resume);
assert!(!mgr.is_aria2_control_epoch_current("a", first_resume).await);
assert!(mgr.is_aria2_control_epoch_current("a", pause).await);
}
#[tokio::test]
async fn forgetting_aria2_gid_clears_mapping_without_releasing_twice() {
let (mgr, _spawner) = make_manager(1);