Skip to content

Commit 1f94352

Browse files
committed
limit the number of simultaneous downloads
Acquire a semaphore permit while executing each download task, instead of while _creating_ each download task. - Fixes gorilla-devs#370. - Also prevents a deadlock when downloading more than 75 mods.
1 parent e034941 commit 1f94352

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

src/download.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -117,13 +117,13 @@ pub async fn download(
117117
let client = Arc::new(reqwest::Client::new());
118118

119119
for downloadable in to_download {
120-
let permit = Arc::clone(&semaphore).acquire_owned().await?;
120+
let semaphore = Arc::clone(&semaphore);
121121
let progress_bar = Arc::clone(&progress_bar);
122122
let client = Arc::clone(&client);
123123
let output_dir = output_dir.clone();
124124

125125
tasks.push(async move {
126-
let _permit = permit;
126+
let _permit = semaphore.acquire_owned().await?;
127127
let (length, filename) = downloadable
128128
.download(&client, &output_dir, |additional| {
129129
progress_bar

0 commit comments

Comments
 (0)