]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: aws-chunked need not supply any content-length
authorMatt Benjamin <mbenjamin@redhat.com>
Sun, 18 May 2025 01:02:34 +0000 (21:02 -0400)
committerMatt Benjamin <mbenjamin@redhat.com>
Thu, 12 Jun 2025 17:35:53 +0000 (13:35 -0400)
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 <mbenjamin@redhat.com>
src/rgw/rgw_auth_s3.cc
src/rgw/rgw_op.cc

index a60aebd480720315f3f97df94530af7d6ace6879..da25b580d4aef48633a3ca3cc751198413cda538 100644 (file)
@@ -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);
index 349f23615f35e72d7f12aac315381dcdd31c9ac5..7ecabbc103ac8bd8ab21fbc9915c7b3d54a06334 100644 (file)
@@ -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;