diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index 6ddd6748a1b..223a94e29af 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -3381,7 +3381,7 @@ void RGWPutObj::execute() * processing any input from user in order to prohibit overwriting. */ if (slo_info) { bufferlist slo_userindicator_bl; - ::encode("True", slo_userindicator_bl); + slo_userindicator_bl.append("True", 4); emplace_attr(RGW_ATTR_SLO_UINDICATOR, std::move(slo_userindicator_bl)); } diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc index 96285e258ff..7174a0a4e20 100644 --- a/src/rgw/rgw_rest_s3.cc +++ b/src/rgw/rgw_rest_s3.cc @@ -275,6 +275,9 @@ int RGWGetObj_ObjStore_S3::send_response_data(bufferlist& bl, off_t bl_ofs, if (!content_type) { content_type = iter->second.c_str(); } + } else if (strcmp(name, RGW_ATTR_SLO_UINDICATOR) == 0) { + // this attr has an extra length prefix from ::encode() in prior versions + dump_header(s, "X-Object-Meta-Static-Large-Object", "True"); } else if (strncmp(name, RGW_ATTR_META_PREFIX, sizeof(RGW_ATTR_META_PREFIX)-1) == 0) { /* User custom metadata. */ diff --git a/src/rgw/rgw_rest_swift.cc b/src/rgw/rgw_rest_swift.cc index 6cca4f2efc2..7704d509529 100644 --- a/src/rgw/rgw_rest_swift.cc +++ b/src/rgw/rgw_rest_swift.cc @@ -1105,6 +1105,9 @@ static void dump_object_metadata(struct req_state * const s, if (aiter != std::end(rgw_to_http_attrs)) { response_attrs[aiter->second] = kv.second.c_str(); + } else if (strcmp(name, RGW_ATTR_SLO_UINDICATOR) == 0) { + // this attr has an extra length prefix from ::encode() in prior versions + dump_header(s, "X-Object-Meta-Static-Large-Object", "True"); } else if (strncmp(name, RGW_ATTR_META_PREFIX, sizeof(RGW_ATTR_META_PREFIX)-1) == 0) { name += sizeof(RGW_ATTR_META_PREFIX) - 1;