 Chromium Code Reviews
 Chromium Code Reviews Issue 11348127:
  Make HTTP server close sockets when closed in idle state  (Closed) 
  Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
    
  
    Issue 11348127:
  Make HTTP server close sockets when closed in idle state  (Closed) 
  Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart| Index: tests/standalone/io/http_shutdown_test.dart | 
| diff --git a/tests/standalone/io/http_shutdown_test.dart b/tests/standalone/io/http_shutdown_test.dart | 
| index 0a65ea80f46fed9050d5f09df37433c3406d1124..76b2715a67f44c39fe7666d9cddc731a809d5990 100644 | 
| --- a/tests/standalone/io/http_shutdown_test.dart | 
| +++ b/tests/standalone/io/http_shutdown_test.dart | 
| @@ -95,6 +95,66 @@ void test3(int totalConnections) { | 
| } | 
| +void test4() { | 
| + var server = new HttpServer(); | 
| + server.listen("127.0.0.1", 0); | 
| + server.defaultRequestHandler = (var request, var response) { | 
| + request.inputStream.onClosed = () { | 
| + new Timer.repeating(100, (timer) { | 
| + if (server.connectionsInfo().total == 0) { | 
| + server.close(); | 
| + timer.cancel(); | 
| + } | 
| + }); | 
| + response.outputStream.close(); | 
| + }; | 
| + }; | 
| + | 
| + var client= new HttpClient(); | 
| + var conn = client.get("127.0.0.1", server.port, "/"); | 
| + conn.onResponse = (var response) { | 
| + response.inputStream.onClosed = () { | 
| + client.shutdown(); | 
| + }; | 
| + }; | 
| +} | 
| + | 
| + | 
| +void test5(int totalConnections) { | 
| + var server = new HttpServer(); | 
| + server.listen("127.0.0.1", 0, backlog: totalConnections); | 
| + server.defaultRequestHandler = (var request, var response) { | 
| + request.inputStream.onClosed = () { | 
| + response.outputStream.close(); | 
| + }; | 
| + }; | 
| + server.onError = (e) => { }; | 
| + | 
| + // Create a number of client requests and keep then active. Then | 
| + // close the client and wait for the server to loose all active | 
| 
Mads Ager (google)
2012/11/19 10:56:57
loose -> lose
 | 
| + // connections. | 
| + var client= new HttpClient(); | 
| + for (int i = 0; i < totalConnections; i++) { | 
| + var conn = client.post("127.0.0.1", server.port, "/"); | 
| + conn.onRequest = (req) { req.outputStream.write([0]); }; | 
| + } | 
| + bool clientClosed = false; | 
| + new Timer.repeating(100, (timer) { | 
| + if (!clientClosed) { | 
| + if (server.connectionsInfo().total == totalConnections) { | 
| + clientClosed = true; | 
| + client.shutdown(); | 
| + } | 
| + } else { | 
| + if (server.connectionsInfo().total == 0) { | 
| + server.close(); | 
| + timer.cancel(); | 
| + } | 
| + } | 
| + }); | 
| +} | 
| + | 
| + | 
| void main() { | 
| test1(1); | 
| test1(10); | 
| @@ -102,4 +162,7 @@ void main() { | 
| test2(10); | 
| test3(1); | 
| test3(10); | 
| + test4(); | 
| + test5(1); | 
| + test5(10); | 
| } |