From 9912210fe2f71fe78dfcc87ea5ecb6939c145b9f Mon Sep 17 00:00:00 2001 From: lifegpc Date: Wed, 8 Jun 2022 13:34:39 +0000 Subject: [PATCH] Fix create_download_tasks_simple may panic --- src/downloader/tasks.rs | 42 ++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/src/downloader/tasks.rs b/src/downloader/tasks.rs index f869a97..1723392 100644 --- a/src/downloader/tasks.rs +++ b/src/downloader/tasks.rs @@ -26,28 +26,32 @@ pub async fn create_download_tasks_simple(d: Arc< result = d.client.get(d.url.deref().clone(), d.headers.deref().clone()).try_err(gettext("Failed to get url."))?; status = result.status(); } else if status == 206 { - let range = ContentRange::parse_bytes(result.headers()["Content-Range"].as_bytes()); - let need_reget = match range { - ContentRange::Bytes(b) => { - if file_size != 0 && b.complete_length != file_size { - true - } else if start != b.first_byte { - true - } else { - false + let headers = result.headers(); + let need_reget = if headers.contains_key("Content-Range") { + match ContentRange::parse_bytes(headers["Content-Range"].as_bytes()) { + ContentRange::Bytes(b) => { + if file_size != 0 && b.complete_length != file_size { + true + } else if start != b.first_byte { + true + } else { + false + } } - } - ContentRange::UnboundBytes(b) => { - if start != b.first_byte { - true - } else { - false + ContentRange::UnboundBytes(b) => { + if start != b.first_byte { + true + } else { + false + } } + ContentRange::Unknown => { + true + } + _ => { false } } - ContentRange::Unknown => { - true - } - _ => { false } + } else { + true }; if need_reget { d.pd.clear()?;