From bb362c3ee566af764fe2afe4c7514c4f5e6a96b9 Mon Sep 17 00:00:00 2001 From: Alexander Onnikov Date: Thu, 4 Sep 2025 22:05:06 +0700 Subject: [PATCH] Use Option for content_length Signed-off-by: Alexander Onnikov --- server/src/handlers.rs | 11 +++++++---- server/src/merge.rs | 11 ++++++----- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/server/src/handlers.rs b/server/src/handlers.rs index 2b5efd4893..0ce92d78de 100644 --- a/server/src/handlers.rs +++ b/server/src/handlers.rs @@ -378,10 +378,13 @@ pub async fn head(request: HttpRequest) -> HandlerResult { // see https://github.com/actix/examples/blob/master/forms/multipart-s3/src/main.rs#L67-L79 let content_length = merge::content_length(parts); - response.body(SizedStream::new( - content_length as u64, - stream::empty::>().boxed_local(), - )) + match content_length { + Some(content_length) => response.body(SizedStream::new( + content_length as u64, + stream::empty::>().boxed_local(), + )), + None => response.finish(), + } } else { HttpResponse::NotFound().finish() }; diff --git a/server/src/merge.rs b/server/src/merge.rs index e7f8216f18..c06969a734 100644 --- a/server/src/merge.rs +++ b/server/src/merge.rs @@ -156,22 +156,23 @@ pub async fn stream( } } -pub fn content_length(parts: Vec>) -> usize { +pub fn content_length(parts: Vec>) -> Option { let first = parts.first().unwrap(); let merge_strategy = first.data.merge_strategy.unwrap(); - let mut content_length: usize = 0; match merge_strategy { MergeStrategy::Concatenate => { + let mut content_length = 0; + for part in parts { content_length += part.data.size; } + + Some(content_length) } - MergeStrategy::JsonPatch => return 0, + MergeStrategy::JsonPatch => None, } - - content_length } async fn part_data(s3: &S3Client, part: ObjectPart) -> anyhow::Result> {