From 0ae5ab05a0768af1c0cdc5ed395e8c660693819f Mon Sep 17 00:00:00 2001 From: Natalie Weizenbaum <nweiz@google.com> Date: Mon, 18 May 2015 17:49:12 -0700 Subject: [PATCH] Use http_multi_server for serving on localhost. This helps avoid issues where "localhost" means different things on different platforms. Closes #100 R=kevmoo@google.com Review URL: https://codereview.chromium.org//1145483003 --- lib/src/runner/browser/server.dart | 8 ++++---- pubspec.yaml | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/src/runner/browser/server.dart b/lib/src/runner/browser/server.dart index 5fbbf8ad..b49b1832 100644 --- a/lib/src/runner/browser/server.dart +++ b/lib/src/runner/browser/server.dart @@ -8,6 +8,7 @@ import 'dart:async'; import 'dart:convert'; import 'dart:io'; +import 'package:http_multi_server/http_multi_server.dart'; import 'package:path/path.dart' as p; import 'package:pool/pool.dart'; import 'package:shelf/shelf.dart' as shelf; @@ -144,7 +145,7 @@ class BrowserServer { _compilers = new CompilerPool(color: color); /// Starts the underlying server. - Future _load() { + Future _load() async { var cascade = new shelf.Cascade() .add(_webSocketHandler.handler); @@ -160,9 +161,8 @@ class BrowserServer { .addMiddleware(nestingMiddleware(_secret)) .addHandler(cascade.handler); - return shelf_io.serve(pipeline, 'localhost', 0).then((server) { - _server = server; - }); + _server = await HttpMultiServer.loopback(0); + shelf_io.serveRequests(_server, pipeline); } /// Returns a handler that serves the contents of the "packages/" directory diff --git a/pubspec.yaml b/pubspec.yaml index 0a9297e9..798af864 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -10,6 +10,7 @@ dependencies: args: '>=0.12.1 <0.14.0' barback: '>=0.14.0 <0.16.0' crypto: '^0.9.0' + http_multi_server: '^1.0.0' http_parser: '^0.0.2' path: '^1.2.0' pool: '^1.0.0' -- GitLab