Use CURL_TIMEOUT and not CURL_CONNECTTIMEOUT for FETCHER_TIMEOUT in curl

This allows us to use this timeout beyond DNS resolution. For the initial
connect, we use a hardcoded timeout of 10s for now.
This commit is contained in:
Martin Willi 2013-02-08 10:12:10 +01:00
parent 2ccdc19ed9
commit 763e86c093

View file

@ -21,7 +21,7 @@
#include "curl_fetcher.h"
#define DEFAULT_TIMEOUT 10
#define CONNECT_TIMEOUT 10
typedef struct private_curl_fetcher_t private_curl_fetcher_t;
@ -48,6 +48,11 @@ struct private_curl_fetcher_t {
* Callback function
*/
fetcher_callback_t cb;
/**
* Timeout for a transfer
*/
long timeout;
};
/**
@ -94,7 +99,11 @@ METHOD(fetcher_t, fetch, status_t,
curl_easy_setopt(this->curl, CURLOPT_ERRORBUFFER, error);
curl_easy_setopt(this->curl, CURLOPT_FAILONERROR, TRUE);
curl_easy_setopt(this->curl, CURLOPT_NOSIGNAL, TRUE);
curl_easy_setopt(this->curl, CURLOPT_CONNECTTIMEOUT, DEFAULT_TIMEOUT);
if (this->timeout)
{
curl_easy_setopt(this->curl, CURLOPT_TIMEOUT, this->timeout);
}
curl_easy_setopt(this->curl, CURLOPT_CONNECTTIMEOUT, CONNECT_TIMEOUT);
curl_easy_setopt(this->curl, CURLOPT_WRITEFUNCTION, (void*)curl_cb);
curl_easy_setopt(this->curl, CURLOPT_WRITEDATA, &data);
if (this->headers)
@ -160,8 +169,7 @@ METHOD(fetcher_t, set_option, bool,
}
case FETCH_TIMEOUT:
{
curl_easy_setopt(this->curl, CURLOPT_CONNECTTIMEOUT,
va_arg(args, u_int));
this->timeout = va_arg(args, u_int);
break;
}
case FETCH_CALLBACK:
@ -211,4 +219,3 @@ curl_fetcher_t *curl_fetcher_create()
}
return &this->public;
}