| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 part of dart.io; | 5 part of dart.io; |
| 6 | 6 |
| 7 const int _OUTGOING_BUFFER_SIZE = 8 * 1024; | 7 const int _OUTGOING_BUFFER_SIZE = 8 * 1024; |
| 8 | 8 |
| 9 class _HttpIncoming extends Stream<List<int>> { | 9 class _HttpIncoming extends Stream<List<int>> { |
| 10 final int _transferLength; | 10 final int _transferLength; |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 255 ..addAll(this.redirects) | 255 ..addAll(this.redirects) |
| 256 ..add(new _RedirectInfo(statusCode, method, url)); | 256 ..add(new _RedirectInfo(statusCode, method, url)); |
| 257 return request.close(); | 257 return request.close(); |
| 258 }); | 258 }); |
| 259 } | 259 } |
| 260 | 260 |
| 261 StreamSubscription<List<int>> listen(void onData(List<int> event), | 261 StreamSubscription<List<int>> listen(void onData(List<int> event), |
| 262 {Function onError, | 262 {Function onError, |
| 263 void onDone(), | 263 void onDone(), |
| 264 bool cancelOnError}) { | 264 bool cancelOnError}) { |
| 265 if (_incoming.upgraded) { |
| 266 // If upgraded, the connection is already 'removed' form the client. |
| 267 // Since listening to upgraded data is 'bogus', simply close and |
| 268 // return empty stream subscription. |
| 269 _httpRequest._httpClientConnection.destroy(); |
| 270 return new Stream.fromIterable([]).listen(null, onDone: onDone); |
| 271 } |
| 265 var stream = _incoming; | 272 var stream = _incoming; |
| 266 if (headers.value(HttpHeaders.CONTENT_ENCODING) == "gzip") { | 273 if (headers.value(HttpHeaders.CONTENT_ENCODING) == "gzip") { |
| 267 stream = stream.transform(GZIP.decoder); | 274 stream = stream.transform(GZIP.decoder); |
| 268 } | 275 } |
| 269 return stream.listen(onData, | 276 return stream.listen(onData, |
| 270 onError: onError, | 277 onError: onError, |
| 271 onDone: onDone, | 278 onDone: onDone, |
| 272 cancelOnError: cancelOnError); | 279 cancelOnError: cancelOnError); |
| 273 } | 280 } |
| 274 | 281 |
| (...skipping 1077 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1352 _streamFuture = outgoing.done | 1359 _streamFuture = outgoing.done |
| 1353 .then((s) { | 1360 .then((s) { |
| 1354 // Request sent, set up response completer. | 1361 // Request sent, set up response completer. |
| 1355 _nextResponseCompleter = new Completer(); | 1362 _nextResponseCompleter = new Completer(); |
| 1356 | 1363 |
| 1357 // Listen for response. | 1364 // Listen for response. |
| 1358 _nextResponseCompleter.future | 1365 _nextResponseCompleter.future |
| 1359 .then((incoming) { | 1366 .then((incoming) { |
| 1360 _currentUri = null; | 1367 _currentUri = null; |
| 1361 incoming.dataDone.then((closing) { | 1368 incoming.dataDone.then((closing) { |
| 1369 if (incoming.upgraded) { |
| 1370 _httpClient._connectionClosed(this); |
| 1371 startTimer(); |
| 1372 return; |
| 1373 } |
| 1362 if (closed) return; | 1374 if (closed) return; |
| 1363 if (!closing && | 1375 if (!closing && |
| 1364 !_dispose && | 1376 !_dispose && |
| 1365 incoming.headers.persistentConnection && | 1377 incoming.headers.persistentConnection && |
| 1366 request.persistentConnection) { | 1378 request.persistentConnection) { |
| 1367 // Return connection, now we are done. | 1379 // Return connection, now we are done. |
| 1368 _httpClient._returnConnection(this); | 1380 _httpClient._returnConnection(this); |
| 1369 _subscription.resume(); | 1381 _subscription.resume(); |
| 1370 } else { | 1382 } else { |
| 1371 destroy(); | 1383 destroy(); |
| (...skipping 1344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2716 const _RedirectInfo(this.statusCode, this.method, this.location); | 2728 const _RedirectInfo(this.statusCode, this.method, this.location); |
| 2717 } | 2729 } |
| 2718 | 2730 |
| 2719 String _getHttpVersion() { | 2731 String _getHttpVersion() { |
| 2720 var version = Platform.version; | 2732 var version = Platform.version; |
| 2721 // Only include major and minor version numbers. | 2733 // Only include major and minor version numbers. |
| 2722 int index = version.indexOf('.', version.indexOf('.') + 1); | 2734 int index = version.indexOf('.', version.indexOf('.') + 1); |
| 2723 version = version.substring(0, index); | 2735 version = version.substring(0, index); |
| 2724 return 'Dart/$version (dart:io)'; | 2736 return 'Dart/$version (dart:io)'; |
| 2725 } | 2737 } |
| OLD | NEW |