| Index: chrome/browser/net/http_pipelining_compatibility_client.cc
|
| diff --git a/chrome/browser/net/http_pipelining_compatibility_client.cc b/chrome/browser/net/http_pipelining_compatibility_client.cc
|
| index 65b22887f77cf0445083f33a0e87668af38ac147..beecf5d5508a915a3cd78863cecff5bea0eb9d89 100644
|
| --- a/chrome/browser/net/http_pipelining_compatibility_client.cc
|
| +++ b/chrome/browser/net/http_pipelining_compatibility_client.cc
|
| @@ -85,18 +85,17 @@ HttpPipeliningCompatibilityClient::Request::Request(
|
| HttpPipeliningCompatibilityClient* client,
|
| net::URLRequestContext* url_request_context)
|
| : request_id_(request_id),
|
| - request_(GURL(base_url + info.filename), this),
|
| + request_(new net::URLRequest(GURL(base_url + info.filename), this)),
|
| info_(info),
|
| - client_(client),
|
| - finished_(false) {
|
| - request_.set_context(url_request_context);
|
| - request_.set_load_flags(net::LOAD_BYPASS_CACHE |
|
| - net::LOAD_DISABLE_CACHE |
|
| - net::LOAD_DO_NOT_SAVE_COOKIES |
|
| - net::LOAD_DO_NOT_SEND_COOKIES |
|
| - net::LOAD_DO_NOT_PROMPT_FOR_LOGIN |
|
| - net::LOAD_DO_NOT_SEND_AUTH_DATA);
|
| - request_.Start();
|
| + client_(client) {
|
| + request_->set_context(url_request_context);
|
| + request_->set_load_flags(net::LOAD_BYPASS_CACHE |
|
| + net::LOAD_DISABLE_CACHE |
|
| + net::LOAD_DO_NOT_SAVE_COOKIES |
|
| + net::LOAD_DO_NOT_SEND_COOKIES |
|
| + net::LOAD_DO_NOT_PROMPT_FOR_LOGIN |
|
| + net::LOAD_DO_NOT_SEND_AUTH_DATA);
|
| + request_->Start();
|
| }
|
|
|
| HttpPipeliningCompatibilityClient::Request::~Request() {
|
| @@ -120,9 +119,6 @@ void HttpPipeliningCompatibilityClient::Request::OnSSLCertificateError(
|
|
|
| void HttpPipeliningCompatibilityClient::Request::OnResponseStarted(
|
| net::URLRequest* request) {
|
| - if (finished_) {
|
| - return;
|
| - }
|
| int response_code = request->GetResponseCode();
|
| if (response_code > 0) {
|
| client_->ReportResponseCode(request_id_, response_code);
|
| @@ -162,9 +158,9 @@ void HttpPipeliningCompatibilityClient::Request::OnReadCompleted(
|
|
|
| void HttpPipeliningCompatibilityClient::Request::DoRead() {
|
| int bytes_read = 0;
|
| - if (request_.Read(read_buffer_.get(), info_.expected_response.length(),
|
| - &bytes_read)) {
|
| - OnReadCompleted(&request_, bytes_read);
|
| + if (request_->Read(read_buffer_.get(), info_.expected_response.length(),
|
| + &bytes_read)) {
|
| + OnReadCompleted(request_.get(), bytes_read);
|
| }
|
| }
|
|
|
| @@ -183,11 +179,7 @@ void HttpPipeliningCompatibilityClient::Request::DoReadFinished() {
|
| }
|
|
|
| void HttpPipeliningCompatibilityClient::Request::Finished(Status result) {
|
| - if (finished_) {
|
| - return;
|
| - }
|
| - finished_ = true;
|
| - const net::URLRequestStatus& status = request_.status();
|
| + const net::URLRequestStatus& status = request_->status();
|
| if (status.status() == net::URLRequestStatus::FAILED) {
|
| // Network errors trump all other status codes, because network errors can
|
| // be detected by the network stack even with real content. If we determine
|
| @@ -195,9 +187,10 @@ void HttpPipeliningCompatibilityClient::Request::Finished(Status result) {
|
| // don't need to worry about broken proxies.
|
| client_->ReportNetworkError(request_id_, status.error());
|
| client_->OnRequestFinished(request_id_, NETWORK_ERROR);
|
| - return;
|
| + } else {
|
| + client_->OnRequestFinished(request_id_, result);
|
| }
|
| - client_->OnRequestFinished(request_id_, result);
|
| + request_.reset();
|
| }
|
|
|
| } // namespace chrome_browser_net
|
|
|