curl: Add support to return the response code

This commit is contained in:
Tobias Brunner
2014-05-19 14:28:40 +02:00
parent deb8975bd2
commit 703a0b4c3e
+27 -1
View File
@@ -49,6 +49,11 @@ struct private_curl_fetcher_t {
*/
fetcher_callback_t cb;
/**
* Variable that receives the response code
*/
u_int *result;
/**
* Timeout for a transfer
*/
@@ -82,6 +87,7 @@ METHOD(fetcher_t, fetch, status_t,
{
char error[CURL_ERROR_SIZE], *enc_uri;
status_t status;
long result = 0;
cb_data_t data = {
.cb = this->cb,
.user = userdata,
@@ -123,10 +129,25 @@ METHOD(fetcher_t, fetch, status_t,
status = NOT_SUPPORTED;
break;
case CURLE_OK:
if (this->result)
{
curl_easy_getinfo(this->curl, CURLINFO_RESPONSE_CODE,
&result);
*this->result = result;
}
status = SUCCESS;
break;
default:
DBG1(DBG_LIB, "libcurl http request failed: %s", error);
if (this->result)
{ /* don't log an error in this case */
curl_easy_getinfo(this->curl, CURLINFO_RESPONSE_CODE,
&result);
*this->result = result;
}
else
{
DBG1(DBG_LIB, "libcurl http request failed: %s", error);
}
status = FAILED;
break;
}
@@ -188,6 +209,11 @@ METHOD(fetcher_t, set_option, bool,
this->cb = va_arg(args, fetcher_callback_t);
break;
}
case FETCH_RESPONSE_CODE:
{
this->result = va_arg(args, u_int*);
break;
}
case FETCH_SOURCEIP:
{
char buf[64];