Index: webkit/media/buffered_resource_loader.cc |
diff --git a/webkit/media/buffered_resource_loader.cc b/webkit/media/buffered_resource_loader.cc |
index 53a236e6bfa9ac576fdfc36cddca6c055b270e71..d293f4d7e95a9d56c2e4ff2b8115390a5136768e 100644 |
--- a/webkit/media/buffered_resource_loader.cc |
+++ b/webkit/media/buffered_resource_loader.cc |
@@ -382,15 +382,22 @@ void BufferedResourceLoader::didReceiveResponse( |
range_supported_ = (accept_ranges.find("bytes") != std::string::npos); |
acolwell GONE FROM CHROMIUM
2012/03/14 18:24:49
Should this and the line above be moved into the i
Ami GONE FROM CHROMIUM
2012/03/14 19:37:20
Done.
|
partial_response = (response.httpStatusCode() == kHttpPartialContent); |
+ bool ok_response = (response.httpStatusCode() == kHttpOK); |
if (range_requested_) { |
// If we have verified the partial response and it is correct, we will |
// return net::OK. It's also possible for a server to support range |
// requests without advertising Accept-Ranges: bytes. |
- if (partial_response && VerifyPartialResponse(response)) |
+ if (partial_response && VerifyPartialResponse(response)) { |
range_supported_ = true; |
- else |
+ } else if (ok_response && first_byte_position_ == 0 && |
+ last_byte_position_ == kPositionNotSpecified) { |
+ // We accept a 200 response for a Range:0- request and down-grade the |
+ // data source to streaming. |
+ range_supported_ = false; |
+ } else { |
error = net::ERR_INVALID_RESPONSE; |
+ } |
} else if (response.httpStatusCode() != kHttpOK) { |
// We didn't request a range but server didn't reply with "200 OK". |
error = net::ERR_FAILED; |