Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2321)

Unified Diff: net/url_request/url_request_http_job.cc

Issue 6881106: Treat ERR_CONNECTION_CLOSED as end-of-data marker for downloads. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed comment & decreased logging verbosity. Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/url_request/url_request_http_job.cc
diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc
index b7f8d4c6d39fc9b29394320f53efedfa7c6b46df..8eb5c1f36dce1b5e0d5fade8644b586ad0640482 100644
--- a/net/url_request/url_request_http_job.cc
+++ b/net/url_request/url_request_http_job.cc
@@ -283,7 +283,22 @@ void URLRequestHttpJob::NotifyHeadersComplete() {
URLRequestJob::NotifyHeadersComplete();
}
-void URLRequestHttpJob::NotifyDone(const URLRequestStatus& status) {
+void URLRequestHttpJob::NotifyDone(const URLRequestStatus& original_status) {
+ URLRequestStatus status(original_status);
+ // Some servers send the body compressed, but specify the content length as
+ // the uncompressed size. Although this violates, the HTTP spec, we want to
+ // support it (as IE and FireFox do), but *only* for an exact match.
+ // See http://crbug.com/79694.
+ if (status.os_error() == net::ERR_CONNECTION_CLOSED) {
+ if (request_ && request_->response_headers()) {
+ if (postfilter_bytes_read() ==
+ request_->response_headers()->GetContentLength()) {
+ // Clear the error.
+ status = URLRequestStatus();
+ }
+ }
+ }
+
RecordCompressionHistograms();
URLRequestJob::NotifyDone(status);
}

Powered by Google App Engine
This is Rietveld 408576698