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>
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);
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;