Index: libcurl_http_fetcher.cc |
diff --git a/libcurl_http_fetcher.cc b/libcurl_http_fetcher.cc |
index 16d02392ea9b594ba602b04fbd5abdcff0d5b39e..e46bf8e5d7dab99d064be04d3a7d213ee34e761d 100644 |
--- a/libcurl_http_fetcher.cc |
+++ b/libcurl_http_fetcher.cc |
@@ -14,6 +14,7 @@ |
#include "update_engine/flimflam_proxy.h" |
#include "update_engine/utils.h" |
+using google::protobuf::NewCallback; |
using std::max; |
using std::make_pair; |
using std::string; |
@@ -151,14 +152,25 @@ void LibcurlHttpFetcher::ResumeTransfer(const std::string& url) { |
// Begins the transfer, which must not have already been started. |
void LibcurlHttpFetcher::BeginTransfer(const std::string& url) { |
+ CHECK(!transfer_in_progress_); |
+ url_ = url; |
+ if (!ResolveProxiesForUrl( |
+ url_, |
+ NewCallback(this, &LibcurlHttpFetcher::ProxiesResolved))) { |
+ LOG(ERROR) << "Couldn't resolve proxies"; |
+ if (delegate_) |
+ delegate_->TransferComplete(this, false); |
+ } |
+} |
+ |
+void LibcurlHttpFetcher::ProxiesResolved() { |
transfer_size_ = -1; |
resume_offset_ = 0; |
retry_count_ = 0; |
no_network_retry_count_ = 0; |
http_response_code_ = 0; |
terminate_requested_ = false; |
- ResolveProxiesForUrl(url); |
- ResumeTransfer(url); |
+ ResumeTransfer(url_); |
CurlPerformOnce(); |
} |