Index: src/libcurl_http_fetcher.cc |
diff --git a/src/libcurl_http_fetcher.cc b/src/libcurl_http_fetcher.cc |
index 89514274a496113bbec42b15841e3ab5bca27864..55affc9c9ba79dd547b4b55334d781792c2d59ca 100644 |
--- a/src/libcurl_http_fetcher.cc |
+++ b/src/libcurl_http_fetcher.cc |
@@ -21,7 +21,6 @@ namespace cashew { |
namespace { |
const int kMaxRetriesCount = 20; |
-const char kCACertificatesPath[] = "/usr/share/cashew/ca-certificates"; |
} |
LibcurlHttpFetcher::~LibcurlHttpFetcher() { |
@@ -73,11 +72,8 @@ void LibcurlHttpFetcher::ResumeTransfer(const std::string& url) { |
CHECK_EQ(curl_easy_setopt(curl_handle_, CURLOPT_MAXREDIRS, kMaxRedirects), |
CURLE_OK); |
- // Makes sure that peer certificate verification is enabled and restricts the |
- // set of trusted certificates. |
+ // Makes sure that peer certificate verification is enabled |
CHECK_EQ(curl_easy_setopt(curl_handle_, CURLOPT_SSL_VERIFYPEER, 1), CURLE_OK); |
- CHECK_EQ(curl_easy_setopt(curl_handle_, CURLOPT_CAPATH, kCACertificatesPath), |
- CURLE_OK); |
CHECK_EQ(curl_multi_add_handle(curl_multi_handle_, curl_handle_), CURLM_OK); |
transfer_in_progress_ = true; |
@@ -111,15 +107,12 @@ void LibcurlHttpFetcher::CurlPerformOnce() { |
retcode = curl_multi_perform(curl_multi_handle_, &running_handles); |
} |
if (0 == running_handles) { |
- long http_response_code = 0; // NOLINT |
- if (curl_easy_getinfo(curl_handle_, |
- CURLINFO_RESPONSE_CODE, |
- &http_response_code) == CURLE_OK) { |
- LOG(INFO) << "HTTP response code: " << http_response_code; |
+ GetHttpResponseCode(); |
+ if (http_response_code_) { |
+ LOG(INFO) << "HTTP response code: " << http_response_code_; |
} else { |
- LOG(ERROR) << "Unable to get http response code."; |
+ LOG(WARNING) << "Unable to get http response code."; |
} |
- http_response_code_ = static_cast<int>(http_response_code); |
// we're done! |
CleanUp(); |
@@ -141,9 +134,9 @@ void LibcurlHttpFetcher::CurlPerformOnce() { |
return; |
} else { |
if (delegate_) { |
- // success is when http_response_code is 2xx |
- bool success = (http_response_code >= 200) && |
- (http_response_code < 300); |
+ // success is when http_response_code_ is 2xx |
+ bool success = (http_response_code_ >= 200) && |
+ (http_response_code_ < 300); |
delegate_->TransferComplete(this, success); |
} |
} |
@@ -154,6 +147,7 @@ void LibcurlHttpFetcher::CurlPerformOnce() { |
} |
size_t LibcurlHttpFetcher::LibcurlWrite(void *ptr, size_t size, size_t nmemb) { |
+ GetHttpResponseCode(); |
DLOG(INFO) << "LibcurlWrite"; |
{ |
double transfer_size_double; |
@@ -306,4 +300,17 @@ void LibcurlHttpFetcher::CleanUp() { |
transfer_in_progress_ = false; |
} |
+void LibcurlHttpFetcher::GetHttpResponseCode() { |
+ long http_response_code = 0; // NOLINT |
+ CURLcode result = curl_easy_getinfo(curl_handle_, |
+ CURLINFO_RESPONSE_CODE, |
+ &http_response_code); |
+ if (result == CURLE_OK) { |
+ http_response_code_ = static_cast<int>(http_response_code); |
+ } else { |
+ DLOG(WARNING) << "GetHttpResponseCode: curl_easy_getinfo failed: " |
+ << curl_easy_strerror(result); |
+ } |
+} |
+ |
} // namespace cashew |