From: Matt Benjamin Date: Sun, 18 May 2025 01:02:34 +0000 (-0400) Subject: rgw: aws-chunked need not supply any content-length X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=39f97d41b1b790ea48fb7fa2246daa9e46390ee5;p=ceph-ci.git 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 Resolves: rhbz#2392604 Signed-off-by: Matt Benjamin (cherry picked from commit 0624dbbc3bd10f816262d5e096fa7b147231b2fb) --- diff --git a/src/rgw/rgw_auth_s3.cc b/src/rgw/rgw_auth_s3.cc index 9d7f6ec1f48..abac5c1b343 100644 --- a/src/rgw/rgw_auth_s3.cc +++ b/src/rgw/rgw_auth_s3.cc @@ -1482,9 +1482,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 1c11fd5382a..15f241ffc19 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -7026,7 +7026,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;