From: Tobias Brunner Date: Fri, 9 May 2014 16:35:20 +0000 (+0200) Subject: curl: Add support to return the response code X-Git-Tag: 5.2.0dr5~36^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=703a0b4c3e11ceee936c795efdb630fbc45faa75;p=thirdparty%2Fstrongswan.git curl: Add support to return the response code --- diff --git a/src/libstrongswan/plugins/curl/curl_fetcher.c b/src/libstrongswan/plugins/curl/curl_fetcher.c index 644f277092..573c4c3696 100644 --- a/src/libstrongswan/plugins/curl/curl_fetcher.c +++ b/src/libstrongswan/plugins/curl/curl_fetcher.c @@ -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];