From 0624dbbc3bd10f816262d5e096fa7b147231b2fb Mon Sep 17 00:00:00 2001 From: Matt Benjamin Date: Sat, 17 May 2025 21:02:34 -0400 Subject: [PATCH] rgw: aws-chunked need not supply any content-length The updated logic for aws chunked handling (2024) appears sufficient to handle the cases produced by aws-sdk-go-v2. Note that https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-streaming.html states that "For all requests, you must include the x-amz-decoded-content-length header, specifying the size of the object in bytes." (accessed 5/17/2025) (but now we do not enforce it). Reported (with reproducer!) by: Fred Heinecke. Fixes: https://tracker.ceph.com/issues/71183 Signed-off-by: Matt Benjamin --- src/rgw/rgw_auth_s3.cc | 4 +--- src/rgw/rgw_op.cc | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/rgw/rgw_auth_s3.cc b/src/rgw/rgw_auth_s3.cc index a60aebd4807..da25b580d4a 100644 --- a/src/rgw/rgw_auth_s3.cc +++ b/src/rgw/rgw_auth_s3.cc @@ -1480,9 +1480,7 @@ void AWSv4ComplMulti::modify_request_state(const DoutPrefixProvider* dpp, req_st const char* const decoded_length = \ s_rw->info.env->get("HTTP_X_AMZ_DECODED_CONTENT_LENGTH"); - if (!decoded_length) { - throw -EINVAL; - } else { + if (decoded_length) { /* XXXX oh my, we forget the original content length */ s_rw->length = decoded_length; s_rw->content_length = parse_content_length(decoded_length); diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index 349f23615f3..7ecabbc103a 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -7028,7 +7028,7 @@ void RGWCompleteMultipart::execute(optional_yield y) fmt::format("INFO: {}->get_multipart_upload for obj {}, {} cksum_type {}", s->bucket->get_name(), s->object->get_name(), upload_id, - (!!upload) ? to_string(upload->cksum_type) : 0) + (!!upload) ? to_string(upload->cksum_type) : "nil") << dendl; rgw_placement_rule* dest_placement; -- 2.39.5