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

Unified Diff: sdk/lib/io/http_parser.dart

Issue 11637017: Change the HTTP Content-Length handling (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years 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: sdk/lib/io/http_parser.dart
diff --git a/sdk/lib/io/http_parser.dart b/sdk/lib/io/http_parser.dart
index ee3dbcc016e15246db1bbdac00ef1870e30332a0..187ab13b87c7755a953ee003bf8cfe0b5bcff6b5 100644
--- a/sdk/lib/io/http_parser.dart
+++ b/sdk/lib/io/http_parser.dart
@@ -387,11 +387,7 @@ class _HttpParser {
String headerField = new String.fromCharCodes(_headerField);
String headerValue = new String.fromCharCodes(_headerValue);
bool reportHeader = true;
- if (headerField == "content-length" && !_chunked) {
- // Ignore the Content-Length header if Transfer-Encoding
- // is chunked (RFC 2616 section 4.4)
- _contentLength = parseInt(headerValue);
- } else if (headerField == "connection") {
+ if (headerField == "connection") {
List<String> tokens = _tokenizeFieldValue(headerValue);
for (int i = 0; i < tokens.length; i++) {
String token = tokens[i].toLowerCase();
@@ -408,10 +404,7 @@ class _HttpParser {
reportHeader = false;
} else if (headerField == "transfer-encoding" &&
headerValue.toLowerCase() == "chunked") {
- // Ignore the Content-Length header if Transfer-Encoding
- // is chunked (RFC 2616 section 4.4)
_chunked = true;
- _contentLength = -1;
}
if (reportHeader) {
_headers.add(headerField, headerValue);
@@ -431,6 +424,12 @@ class _HttpParser {
case _State.HEADER_ENDING:
_expect(byte, _CharCode.LF);
+
+ _contentLength = _headers.contentLength;
Anders Johnsen 2012/12/19 15:43:58 Nice cleanup!
Søren Gjesse 2012/12/20 07:39:01 Thanks.
+ // Ignore the Content-Length header if Transfer-Encoding
+ // is chunked (RFC 2616 section 4.4)
+ if (_chunked) _contentLength = -1;
+
// If a request message has neither Content-Length nor
// Transfer-Encoding the message must not have a body (RFC
// 2616 section 4.3).

Powered by Google App Engine
This is Rietveld 408576698