Skip to content

Commit f551344

Browse files
committed
refactor(download/curl): use early returns in download()
1 parent ff5b434 commit f551344

File tree

1 file changed

+16
-12
lines changed

1 file changed

+16
-12
lines changed

src/download/mod.rs

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -469,19 +469,23 @@ mod curl {
469469
// Listen for headers and parse out a `Content-Length` (case-insensitive) if it
470470
// comes so we know how much we're downloading.
471471
transfer.header_function(|header| {
472+
let Ok(data) = str::from_utf8(header) else {
473+
return true;
474+
};
472475
let prefix = "content-length: ";
473-
if let Ok(data) = str::from_utf8(header)
474-
&& data.to_ascii_lowercase().starts_with(prefix)
475-
&& let Ok(s) = data[prefix.len()..].trim().parse::<u64>()
476-
{
477-
let msg = Event::DownloadContentLengthReceived(s + resume_from);
478-
match callback(msg) {
479-
Ok(()) => (),
480-
Err(e) => {
481-
*cberr.borrow_mut() = Some(e);
482-
return false;
483-
}
484-
}
476+
let Some((dp, ds)) = data.split_at_checked(prefix.len()) else {
477+
return true;
478+
};
479+
if !dp.eq_ignore_ascii_case(prefix) {
480+
return true;
481+
}
482+
let Ok(s) = ds.trim().parse::<u64>() else {
483+
return true;
484+
};
485+
let msg = Event::DownloadContentLengthReceived(s + resume_from);
486+
if let Err(e) = callback(msg) {
487+
*cberr.borrow_mut() = Some(e);
488+
return false;
485489
}
486490
true
487491
})?;

0 commit comments

Comments
 (0)