Skip to content

Commit 5749b63

Browse files
authored
Merge pull request ceph#60477 from VVoidV/lbr-ETAG-consistent-with-AWS
<rgw> Ensure the ETag format is consistent with AWS S3 API Reviewed-by: Casey Bodley <[email protected]>
2 parents f75bfa4 + b1c7958 commit 5749b63

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

PendingReleaseNotes

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
moving backwards as a result.
1717
* RGW: IAM policy evaluation now supports conditions ArnEquals and ArnLike, along
1818
with their Not and IfExists variants.
19+
* RGW: Adding missing quotes to the ETag values returned by S3 CopyPart,
20+
PostObject and CompleteMultipartUpload responses.
1921

2022
* RBD: All Python APIs that produce timestamps now return "aware" `datetime`
2123
objects instead of "naive" ones (i.e. those including time zone information

src/rgw/rgw_rest_s3.cc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2919,7 +2919,7 @@ void RGWPutObj_ObjStore_S3::send_response()
29192919
if (strftime(buf, sizeof(buf), "%Y-%m-%dT%T.000Z", &tmp) > 0) {
29202920
s->formatter->dump_string("LastModified", buf);
29212921
}
2922-
s->formatter->dump_string("ETag", etag);
2922+
s->formatter->dump_format("ETag", "\"%s\"", etag.c_str());
29232923
s->formatter->close_section();
29242924
rgw_flush_formatter_and_reset(s, s->formatter);
29252925
return;
@@ -3556,7 +3556,7 @@ void RGWPostObj_ObjStore_S3::send_response()
35563556
}
35573557
s->formatter->dump_string("Bucket", s->bucket_name);
35583558
s->formatter->dump_string("Key", s->object->get_name());
3559-
s->formatter->dump_string("ETag", etag);
3559+
s->formatter->dump_format("ETag", "\"%s\"", etag.c_str());
35603560
s->formatter->close_section();
35613561
}
35623562
s->err.message = err_msg;
@@ -4593,7 +4593,7 @@ void RGWCompleteMultipart_ObjStore_S3::send_response()
45934593
}
45944594
s->formatter->dump_string("Bucket", s->bucket_name);
45954595
s->formatter->dump_string("Key", s->object->get_name());
4596-
s->formatter->dump_string("ETag", etag);
4596+
s->formatter->dump_format("ETag", "\"%s\"", etag.c_str());
45974597
if (armored_cksum) [[likely]] {
45984598
auto cksum_type
45994599
= rgw::cksum::get_checksum_type(*cksum, true /* is_multipart */);

0 commit comments

Comments
 (0)