| Index: net/url_request/sdch_dictionary_fetcher.cc
|
| diff --git a/net/url_request/sdch_dictionary_fetcher.cc b/net/url_request/sdch_dictionary_fetcher.cc
|
| index 8d90f5f0ea2c433697b65cb4b860c757ff0ef5eb..70cf01b9b0a1b7ed6bc5f851cec0762dddafa3dc 100644
|
| --- a/net/url_request/sdch_dictionary_fetcher.cc
|
| +++ b/net/url_request/sdch_dictionary_fetcher.cc
|
| @@ -32,8 +32,10 @@ const int kBufferSize = 4096;
|
| // Map the bytes_read result from a read attempt and a URLRequest's
|
| // status into a single net return value.
|
| int GetReadResult(int bytes_read, const URLRequest* request) {
|
| - int rv = request->status().error();
|
| - if (request->status().is_success() && bytes_read < 0) {
|
| + DCHECK_NE(ERR_IO_PENDING, bytes_read);
|
| +
|
| + int rv = bytes_read;
|
| + if (rv < 0) {
|
| rv = ERR_FAILED;
|
| request->net_log().AddEventWithNetErrorCode(
|
| NetLog::TYPE_SDCH_DICTIONARY_FETCH_IMPLIED_ERROR, rv);
|
| @@ -155,28 +157,29 @@ void SdchDictionaryFetcher::OnReceivedRedirect(
|
| DoLoop(OK);
|
| }
|
|
|
| -void SdchDictionaryFetcher::OnResponseStarted(URLRequest* request) {
|
| +void SdchDictionaryFetcher::OnResponseStarted(URLRequest* request,
|
| + int net_error) {
|
| DCHECK(CalledOnValidThread());
|
| DCHECK_EQ(request, current_request_.get());
|
| DCHECK_EQ(next_state_, STATE_SEND_REQUEST_PENDING);
|
| DCHECK(!in_loop_);
|
| + DCHECK_NE(ERR_IO_PENDING, net_error);
|
|
|
| // Confirm that the response isn't a stale read from the cache (as
|
| // may happen in the reload case). If the response was not retrieved over
|
| // HTTP, it is presumed to be fresh.
|
| HttpResponseHeaders* response_headers = request->response_headers();
|
| - int result = request->status().error();
|
| - if (result == OK && response_headers) {
|
| + if (net_error == OK && response_headers) {
|
| ValidationType validation_type = response_headers->RequiresValidation(
|
| request->response_info().request_time,
|
| request->response_info().response_time, base::Time::Now());
|
| // TODO(rdsmith): Maybe handle VALIDATION_ASYNCHRONOUS by queueing
|
| // a non-reload request for the dictionary.
|
| if (validation_type != VALIDATION_NONE)
|
| - result = ERR_FAILED;
|
| + net_error = ERR_FAILED;
|
| }
|
|
|
| - DoLoop(result);
|
| + DoLoop(net_error);
|
| }
|
|
|
| void SdchDictionaryFetcher::OnReadCompleted(URLRequest* request,
|
| @@ -185,6 +188,7 @@ void SdchDictionaryFetcher::OnReadCompleted(URLRequest* request,
|
| DCHECK_EQ(request, current_request_.get());
|
| DCHECK_EQ(next_state_, STATE_READ_BODY_COMPLETE);
|
| DCHECK(!in_loop_);
|
| + DCHECK_NE(ERR_IO_PENDING, bytes_read);
|
|
|
| DoLoop(GetReadResult(bytes_read, current_request_.get()));
|
| }
|
| @@ -329,9 +333,8 @@ int SdchDictionaryFetcher::DoReadBody(int rv) {
|
| }
|
|
|
| next_state_ = STATE_READ_BODY_COMPLETE;
|
| - int bytes_read = 0;
|
| - current_request_->Read(buffer_.get(), kBufferSize, &bytes_read);
|
| - if (current_request_->status().is_io_pending())
|
| + int bytes_read = current_request_->Read(buffer_.get(), kBufferSize);
|
| + if (bytes_read == ERR_IO_PENDING)
|
| return ERR_IO_PENDING;
|
|
|
| return GetReadResult(bytes_read, current_request_.get());
|
| @@ -347,7 +350,7 @@ int SdchDictionaryFetcher::DoReadBodyComplete(int rv) {
|
| return OK;
|
| }
|
|
|
| - DCHECK(current_request_->status().is_success());
|
| + DCHECK_GE(rv, 0);
|
|
|
| // Data; append to the dictionary and look for more data.
|
| if (rv > 0) {
|
|
|