| Index: pkg/http_multi_server/lib/http_multi_server.dart
|
| diff --git a/pkg/http_multi_server/lib/http_multi_server.dart b/pkg/http_multi_server/lib/http_multi_server.dart
|
| index c055367dc89fad727b2a45e21536a609d0e9a182..da128885fafc3717bc4286aba9dc8ad6f4721d2f 100644
|
| --- a/pkg/http_multi_server/lib/http_multi_server.dart
|
| +++ b/pkg/http_multi_server/lib/http_multi_server.dart
|
| @@ -99,20 +99,15 @@ class HttpMultiServer extends StreamView<HttpRequest> implements HttpServer {
|
| /// [HttpServer.bindSecure].
|
| static Future<HttpServer> _loopback(int port,
|
| Future<HttpServer> bind(InternetAddress address, int port)) {
|
| - return Future.wait([
|
| - supportsIpV6,
|
| - bind(InternetAddress.LOOPBACK_IP_V4, port)
|
| - ]).then((results) {
|
| - var supportsIpV6 = results[0];
|
| - var v4Server = results[1];
|
| -
|
| - if (!supportsIpV6) return v4Server;
|
| -
|
| + return bind(InternetAddress.LOOPBACK_IP_V4, port).then((v4Server) {
|
| // Reuse the IPv4 server's port so that if [port] is 0, both servers use
|
| // the same ephemeral port.
|
| return bind(InternetAddress.LOOPBACK_IP_V6, v4Server.port)
|
| - .then((v6Server) {
|
| - return new HttpMultiServer([v4Server, v6Server]);
|
| + .then((v6Server) => new HttpMultiServer([v4Server, v6Server]))
|
| + .catchError((error) {
|
| + // If we fail to bind to IPv6, just use IPv4.
|
| + if (error is SocketException) return v4Server;
|
| + throw error;
|
| });
|
| });
|
| }
|
|
|