From: Yehuda Sadeh Date: Tue, 21 Mar 2017 21:42:51 +0000 (-0700) Subject: rgw: can send data in RGWRESTStreamRWRequest::send_request() X-Git-Tag: ses5-milestone6~9^2~3^2~58 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=952e72d9793ffdc384cc6b4482b1b22a6a8f3f3c;p=ceph.git rgw: can send data in RGWRESTStreamRWRequest::send_request() Signed-off-by: Yehuda Sadeh --- diff --git a/src/rgw/rgw_rest_client.cc b/src/rgw/rgw_rest_client.cc index 65f2bc6b334..3572cea26dd 100644 --- a/src/rgw/rgw_rest_client.cc +++ b/src/rgw/rgw_rest_client.cc @@ -623,10 +623,11 @@ int RGWRESTStreamRWRequest::send_request(RGWAccessKey& key, map& url_encode(obj.key.name, urlsafe_object); string resource = urlsafe_bucket + "/" + urlsafe_object; - return send_request(&key, extra_headers, resource, mgr); + return send_request(&key, extra_headers, resource, nullptr, mgr); } -int RGWRESTStreamRWRequest::send_request(RGWAccessKey *key, map& extra_headers, const string& resource, RGWHTTPManager *mgr) +int RGWRESTStreamRWRequest::send_request(RGWAccessKey *key, map& extra_headers, const string& resource, + bufferlist *send_data, RGWHTTPManager *mgr) { string new_url = url; if (new_url[new_url.size() - 1] != '/') @@ -685,6 +686,10 @@ int RGWRESTStreamRWRequest::send_request(RGWAccessKey *key, map& headers.push_back(pair(iter->first, iter->second)); } + if (send_data) { + in_data.claim(*send_data); + } + RGWHTTPManager *pmanager = &http_manager; if (mgr) { pmanager = mgr; diff --git a/src/rgw/rgw_rest_client.h b/src/rgw/rgw_rest_client.h index 95222e3f0d2..09393f8ea4a 100644 --- a/src/rgw/rgw_rest_client.h +++ b/src/rgw/rgw_rest_client.h @@ -105,7 +105,7 @@ public: } virtual ~RGWRESTStreamRWRequest() override {} int send_request(RGWAccessKey& key, map& extra_headers, rgw_obj& obj, RGWHTTPManager *mgr = NULL); - int send_request(RGWAccessKey *key, map& extra_headers, const string& resource, RGWHTTPManager *mgr = NULL); + int send_request(RGWAccessKey *key, map& extra_headers, const string& resource, bufferlist *send_data = NULL /* optional input data */, RGWHTTPManager *mgr = NULL); int complete_request(string& etag, real_time *mtime, uint64_t *psize, map& attrs); void set_outbl(bufferlist& _outbl) { diff --git a/src/rgw/rgw_rest_conn.cc b/src/rgw/rgw_rest_conn.cc index 7f9a45a8f75..c8d0682a0a4 100644 --- a/src/rgw/rgw_rest_conn.cc +++ b/src/rgw/rgw_rest_conn.cc @@ -249,7 +249,7 @@ int RGWRESTConn::get_resource(const string& resource, headers.insert(extra_headers->begin(), extra_headers->end()); } - ret = req.send_request(&key, headers, resource, mgr); + ret = req.send_request(&key, headers, resource, nullptr, mgr); if (ret < 0) { ldout(cct, 5) << __func__ << ": send_request() resource=" << resource << " returned ret=" << ret << dendl; return ret; @@ -296,7 +296,7 @@ void RGWRESTReadResource::init_common(param_vec_t *extra_headers) int RGWRESTReadResource::read() { - int ret = req.send_request(&conn->get_key(), headers, resource, mgr); + int ret = req.send_request(&conn->get_key(), headers, resource, nullptr, mgr); if (ret < 0) { ldout(cct, 5) << __func__ << ": send_request() resource=" << resource << " returned ret=" << ret << dendl; return ret; @@ -309,7 +309,7 @@ int RGWRESTReadResource::read() int RGWRESTReadResource::aio_read() { - int ret = req.send_request(&conn->get_key(), headers, resource, mgr); + int ret = req.send_request(&conn->get_key(), headers, resource, nullptr, mgr); if (ret < 0) { ldout(cct, 5) << __func__ << ": send_request() resource=" << resource << " returned ret=" << ret << dendl; return ret; @@ -357,7 +357,7 @@ void RGWRESTSendResource::init_common(param_vec_t *extra_headers) int RGWRESTSendResource::send(bufferlist& outbl) { req.set_outbl(outbl); - int ret = req.send_request(&conn->get_key(), headers, resource, mgr); + int ret = req.send_request(&conn->get_key(), headers, resource, nullptr, mgr); if (ret < 0) { ldout(cct, 5) << __func__ << ": send_request() resource=" << resource << " returned ret=" << ret << dendl; return ret; @@ -371,7 +371,7 @@ int RGWRESTSendResource::send(bufferlist& outbl) int RGWRESTSendResource::aio_send(bufferlist& outbl) { req.set_outbl(outbl); - int ret = req.send_request(&conn->get_key(), headers, resource, mgr); + int ret = req.send_request(&conn->get_key(), headers, resource, nullptr, mgr); if (ret < 0) { ldout(cct, 5) << __func__ << ": send_request() resource=" << resource << " returned ret=" << ret << dendl; return ret;