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

Unified Diff: utils/pub/io.dart

Issue 11348285: Work around issue 6984. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 1 month 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: utils/pub/io.dart
diff --git a/utils/pub/io.dart b/utils/pub/io.dart
index 59aa7b43dc28ee6842d8612838ac5afb2a5a9622..b3019214aa795dbbd73ba80b03eb19e7e7303e9d 100644
--- a/utils/pub/io.dart
+++ b/utils/pub/io.dart
@@ -576,6 +576,22 @@ Future _doProcess(Function fn, String executable, List<String> args, workingDir,
return fn(executable, args, options);
}
+/// Closes [response] while ignoring the body of [request]. Returns a Future
+/// that completes once the response is closed.
+///
+/// Due to issue 6984, it's necessary to drain the request body before closing
+/// the response.
+Future closeHttpResponse(HttpRequest request, HttpResponse response) {
+ var completer = new Completer();
+ request.inputStream.onError = completer.completeException;
+ request.inputStream.onData = request.inputStream.read;
+ request.inputStream.onClosed = () {
+ response.outputStream.close();
+ completer.complete(null);
+ };
+ return completer.future;
+}
+
/**
* Wraps [input] to provide a timeout. If [input] completes before
* [milliseconds] have passed, then the return value completes in the same way.
« pkg/http/test/utils.dart ('K') | « pkg/http/test/utils.dart ('k') | utils/pub/oauth2.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698