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

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

Issue 11645044: Refactor handling of Transfer-Encoding (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
« no previous file with comments | « sdk/lib/io/http_headers.dart ('k') | sdk/lib/io/http_parser.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sdk/lib/io/http_impl.dart
diff --git a/sdk/lib/io/http_impl.dart b/sdk/lib/io/http_impl.dart
index bcfebe7f550f2fecedda88f8e8cee801d5c0c2d7..8f67148fa4d4af7051de4f00a85c8a96ef5ad012 100644
--- a/sdk/lib/io/http_impl.dart
+++ b/sdk/lib/io/http_impl.dart
@@ -127,7 +127,7 @@ class _HttpRequestResponseBase {
_ensureHeadersSent();
bool allWritten = true;
if (data.length > 0) {
- if (_headers.contentLength < 0) {
+ if (_headers.chunkedTransferEncoding) {
// Write chunk size if transfer encoding is chunked.
_writeHexString(data.length);
_writeCRLF();
@@ -146,7 +146,7 @@ class _HttpRequestResponseBase {
_ensureHeadersSent();
bool allWritten = true;
if (count > 0) {
- if (_headers.contentLength < 0) {
+ if (_headers.chunkedTransferEncoding) {
// Write chunk size if transfer encoding is chunked.
_writeHexString(count);
_writeCRLF();
@@ -162,7 +162,7 @@ class _HttpRequestResponseBase {
bool _writeDone() {
bool allWritten = true;
- if (_headers.contentLength < 0) {
+ if (_headers.chunkedTransferEncoding) {
// Terminate the content if transfer encoding is chunked.
allWritten = _httpConnection._write(_Const.END_CHUNKED);
} else {
@@ -175,7 +175,6 @@ class _HttpRequestResponseBase {
}
bool _writeHeaders() {
- _headers._mutable = false;
_headers._write(_httpConnection);
// Terminate header.
return _writeCRLF();
@@ -359,7 +358,6 @@ class _HttpRequest extends _HttpRequestResponseBase implements HttpRequest {
}
// Prepare for receiving data.
- _headers._mutable = false;
_buffer = new _BufferList();
}
@@ -590,13 +588,6 @@ class _HttpResponse extends _HttpRequestResponseBase implements HttpResponse {
_httpConnection._write(data);
_writeCRLF();
- // Determine the value of the "Transfer-Encoding" header based on
- // whether the content length is known. HTTP/1.0 does not support
- // chunked.
- if (_headers.contentLength < 0 && _protocolVersion == "1.1") {
- _headers.set(HttpHeaders.TRANSFER_ENCODING, "chunked");
- }
-
var session = _httpConnection._request._session;
if (session != null && !session._destroyed) {
// Make sure we only send the current session id.
@@ -621,6 +612,7 @@ class _HttpResponse extends _HttpRequestResponseBase implements HttpResponse {
}
// Write headers.
+ _headers._finalize(_protocolVersion);
bool allWritten = _writeHeaders();
_state = _HttpRequestResponseBase.HEADER_SENT;
return allWritten;
@@ -1251,13 +1243,6 @@ class _HttpClientRequest
_httpConnection._write(_Const.HTTP11);
_writeCRLF();
- // Determine the value of the "Transfer-Encoding" header based on
- // whether the content length is known. If there is no content
- // neither "Content-Length" nor "Transfer-Encoding" is set.
- if (_headers.contentLength < 0) {
- _headers.set(HttpHeaders.TRANSFER_ENCODING, "chunked");
- }
-
// Add the cookies to the headers.
if (_cookies != null) {
StringBuffer sb = new StringBuffer();
@@ -1271,6 +1256,7 @@ class _HttpClientRequest
}
// Write headers.
+ _headers._finalize("1.1");
_writeHeaders();
_state = _HttpRequestResponseBase.HEADER_SENT;
}
@@ -1336,7 +1322,6 @@ class _HttpClientResponse
_headers = headers;
// Prepare for receiving data.
- _headers._mutable = false;
_buffer = new _BufferList();
if (isRedirect && _connection.followRedirects) {
if (_connection._redirects == null ||
« no previous file with comments | « sdk/lib/io/http_headers.dart ('k') | sdk/lib/io/http_parser.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698