From 9be85b6b4bf41df834c676d9feac20c0657ac812 Mon Sep 17 00:00:00 2001 From: Jakob Andersen Date: Sat, 11 Nov 2017 21:33:40 +0100 Subject: [PATCH] Support IPv6-only hosts in vmservice_test.dart. (#12985) If we fail to bind to IPv4 loopback, try IPv6. Some hosts only support IPv6, causing the test in vmservice_test.dart to fail, since it couldn't find an available port. --- packages/flutter_tools/lib/src/base/port_scanner.dart | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/flutter_tools/lib/src/base/port_scanner.dart b/packages/flutter_tools/lib/src/base/port_scanner.dart index 58af21ddcd..86cc401afd 100644 --- a/packages/flutter_tools/lib/src/base/port_scanner.dart +++ b/packages/flutter_tools/lib/src/base/port_scanner.dart @@ -61,7 +61,12 @@ class HostPortScanner extends PortScanner { @override Future findAvailablePort() async { - final ServerSocket socket = await ServerSocket.bind(InternetAddress.LOOPBACK_IP_V4, 0); + ServerSocket socket; + try { + socket = await ServerSocket.bind(InternetAddress.LOOPBACK_IP_V4, 0); + } on SocketException { + socket = await ServerSocket.bind(InternetAddress.LOOPBACK_IP_V6, 0, v6Only: true); + } final int port = socket.port; await socket.close(); return port;