From: liubingrun Date: Thu, 24 Oct 2024 14:23:09 +0000 (-0400) Subject: Ensure the ETag format is consistent with AWS S3 API X-Git-Tag: v20.3.0~208^2~1 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=b8795299aacfa2aee5ec4a6fe117424e2ce97b88;p=ceph.git Ensure the ETag format is consistent with AWS S3 API AWS S3 API quotes ETAG everywhere. We still missed a few places. checked with following cmd. ``` $ rg -i "dump.*\"ETag\"" ceph ./src/rgw/rgw_rest_s3.cc 1863: s->formatter->dump_format("ETag", "\"%s\"", iter->meta.etag.c_str()); 1955: s->formatter->dump_format("ETag", "\"%s\"", iter->meta.etag.c_str()); 2030: s->formatter->dump_format("ETag", "\"%s\"", iter->meta.etag.c_str()); 2099: s->formatter->dump_format("ETag", "\"%s\"", iter->meta.etag.c_str()); 2785: s->formatter->dump_format("ETag", "\"%s\"", etag.c_str()); 3422: s->formatter->dump_string("ETag", etag); 3725: s->formatter->dump_format("ETag", "\"%s\"",etag.c_str()); 4228: s->formatter->dump_string("ETag", etag); 4298: s->formatter->dump_format("ETag", "\"%s\"", part->get_etag().c_str()); ./src/rgw/rgw_rest.cc 421: return dump_header(s, "etag", etag); 423: return dump_header_quoted(s, "ETag", etag); ./src/rgw/driver/rados/rgw_sync_module_es_rest.cc 347: s->formatter->dump_format("ETag", "\"%s\"", e.meta.etag.c_str()); ./src/rgw/rgw_admin.cc 8612: handled = dump_string("etag", bl, formatter.get()); ``` Signed-off-by: liubingrun --- diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc index e92bcb1009a5d..5f47260db7f78 100644 --- a/src/rgw/rgw_rest_s3.cc +++ b/src/rgw/rgw_rest_s3.cc @@ -2919,7 +2919,7 @@ void RGWPutObj_ObjStore_S3::send_response() if (strftime(buf, sizeof(buf), "%Y-%m-%dT%T.000Z", &tmp) > 0) { s->formatter->dump_string("LastModified", buf); } - s->formatter->dump_string("ETag", etag); + s->formatter->dump_format("ETag", "\"%s\"", etag.c_str()); s->formatter->close_section(); rgw_flush_formatter_and_reset(s, s->formatter); return; @@ -3556,7 +3556,7 @@ done: } s->formatter->dump_string("Bucket", s->bucket_name); s->formatter->dump_string("Key", s->object->get_name()); - s->formatter->dump_string("ETag", etag); + s->formatter->dump_format("ETag", "\"%s\"", etag.c_str()); s->formatter->close_section(); } s->err.message = err_msg; @@ -4593,7 +4593,7 @@ void RGWCompleteMultipart_ObjStore_S3::send_response() } s->formatter->dump_string("Bucket", s->bucket_name); s->formatter->dump_string("Key", s->object->get_name()); - s->formatter->dump_string("ETag", etag); + s->formatter->dump_format("ETag", "\"%s\"", etag.c_str()); if (armored_cksum) [[likely]] { auto cksum_type = rgw::cksum::get_checksum_type(*cksum, true /* is_multipart */);