void finish(int r) {
Mutex::Locker l(lock);
ret = r;
- cond.Signal();
- done.set(1);
if (easy_handle)
curl_easy_cleanup(easy_handle);
easy_handle = NULL;
h = NULL;
+ done.set(1);
+ cond.Signal();
}
bool is_done() {
RGWHTTPClient::~RGWHTTPClient()
{
if (req_data) {
+ wait();
req_data->put();
}
}
int ret = client->init_request(method, url, req_data);
if (ret < 0) {
req_data->put();
+ req_data = NULL;
return ret;
}
if (!is_threaded) {
ret = link_request(req_data);
+ if (ret < 0) {
+ req_data->put();
+ req_data = NULL;
+ }
return ret;
}
ret = signal_thread();
string last_url;
bool verify_ssl; // Do not validate self signed certificates, default to false
+ atomic_t stopped;
+
protected:
CephContext *cct;
headers.push_back(pair<string, string>(name, val));
}
- virtual int receive_header(void *ptr, size_t len) = 0;
- virtual int receive_data(void *ptr, size_t len) = 0;
- virtual int send_data(void *ptr, size_t len) = 0;
+ virtual int receive_header(void *ptr, size_t len) {
+ return 0;
+ }
+ virtual int receive_data(void *ptr, size_t len) {
+ return 0;
+ }
+ virtual int send_data(void *ptr, size_t len) {
+ return 0;
+ }
void set_send_length(size_t len) {
send_len = len;
int RGWRESTReadResource::aio_read()
{
- get();
int ret = req.get_resource(conn->get_key(), headers, resource, mgr);
if (ret < 0) {
- put();
ldout(cct, 5) << __func__ << ": get_resource() resource=" << resource << " returned ret=" << ret << dendl;
return ret;
}
int RGWRESTPostResource::aio_send(bufferlist& outbl)
{
req.set_outbl(outbl);
- get();
int ret = req.get_resource(conn->get_key(), headers, resource, mgr);
if (ret < 0) {
- put();
ldout(cct, 5) << __func__ << ": get_resource() resource=" << resource << " returned ret=" << ret << dendl;
return ret;
}
int wait_bl(bufferlist *pbl) {
int ret = req.wait();
- put();
if (ret < 0) {
return ret;
}
int RGWRESTReadResource::wait(T *dest)
{
int ret = req.wait();
- put();
if (ret < 0) {
return ret;
}
int wait_bl(bufferlist *pbl) {
int ret = req.wait();
- put();
if (ret < 0) {
return ret;
}
int RGWRESTPostResource::wait(T *dest)
{
int ret = req.wait();
- put();
if (ret < 0) {
return ret;
}