From: Yehuda Sadeh Date: Thu, 13 Jul 2017 16:36:06 +0000 (-0700) Subject: rgw: delete object in error path X-Git-Tag: ses5-milestone9~1^2~11^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=35ede02d8a4a1cdeb500494309e413abf5c05fb4;p=ceph.git rgw: delete object in error path Fixes: http://tracker.ceph.com/issues/20620 Signed-off-by: Yehuda Sadeh --- diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index 0dffd0d4fe15..b951ae2109c6 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -7789,7 +7789,6 @@ int RGWRados::copy_obj_to_remote_dest(RGWObjState *astate, int ret = rest_master_conn->put_obj_init(user_id, dest_obj, astate->size, src_attrs, &out_stream_req); if (ret < 0) { - delete out_stream_req; return ret; } diff --git a/src/rgw/rgw_rest_conn.cc b/src/rgw/rgw_rest_conn.cc index efac447282d9..aa3e0c8881f3 100644 --- a/src/rgw/rgw_rest_conn.cc +++ b/src/rgw/rgw_rest_conn.cc @@ -114,8 +114,14 @@ int RGWRESTConn::put_obj_init(const rgw_user& uid, rgw_obj& obj, uint64_t obj_si param_vec_t params; populate_params(params, &uid, self_zone_group); - *req = new RGWRESTStreamWriteRequest(cct, url, NULL, ¶ms); - return (*req)->put_obj_init(key, obj, obj_size, attrs); + RGWRESTStreamWriteRequest *wr = new RGWRESTStreamWriteRequest(cct, url, NULL, ¶ms); + ret = wr->put_obj_init(key, obj, obj_size, attrs); + if (ret < 0) { + delete wr; + return ret; + } + *req = wr; + return 0; } int RGWRESTConn::complete_request(RGWRESTStreamWriteRequest *req, string& etag, real_time *mtime)