s->object->set_atomic();
- op_ret = s->object->get_obj_attrs(y, this);
+ op_ret = s->object->get_obj_attrs(s->obj_ctx, y, this);
- attrs = s->object->get_attrs();
- auto tags = attrs.find(RGW_ATTR_TAGS);
- if(tags != attrs.end()){
- has_tags = true;
- tags_bl.append(tags->second);
+ if (op_ret == 0){
+ attrs = s->object->get_attrs();
+ auto tags = attrs.find(RGW_ATTR_TAGS);
+ if(tags != attrs.end()){
+ has_tags = true;
+ tags_bl.append(tags->second);
+ }
}
send_response_data(tags_bl);
}
end_header(s, this, "application/xml");
dump_start(s);
- s->formatter->open_object_section_in_ns("Tagging", XMLNS_AWS_S3);
- s->formatter->open_object_section("TagSet");
- if (has_tags){
- RGWObjTagSet_S3 tagset;
- auto iter = bl.cbegin();
- try {
- tagset.decode(iter);
- } catch (buffer::error& err) {
- ldpp_dout(this,0) << "ERROR: caught buffer::error, couldn't decode TagSet" << dendl;
- op_ret= -EIO;
- return;
+ if (!op_ret){
+ s->formatter->open_object_section_in_ns("Tagging", XMLNS_AWS_S3);
+ s->formatter->open_object_section("TagSet");
+ if (has_tags){
+ RGWObjTagSet_S3 tagset;
+ auto iter = bl.cbegin();
+ try {
+ tagset.decode(iter);
+ } catch (buffer::error& err) {
+ ldpp_dout(this,0) << "ERROR: caught buffer::error, couldn't decode TagSet" << dendl;
+ op_ret= -EIO;
+ return;
+ }
+ tagset.dump_xml(s->formatter);
}
- tagset.dump_xml(s->formatter);
+ s->formatter->close_section();
+ s->formatter->close_section();
+ rgw_flush_formatter_and_reset(s, s->formatter);
}
- s->formatter->close_section();
- s->formatter->close_section();
- rgw_flush_formatter_and_reset(s, s->formatter);
}
void RGWDeleteObjTags_ObjStore_S3::send_response()
{
+ if (op_ret == 0){
+ op_ret = STATUS_NO_CONTENT;
+ }
if (op_ret)
set_req_state_err(s, op_ret);
dump_errno(s);