Stop leaking iproxy processes (#42026)
diff --git a/packages/flutter_tools/lib/src/protocol_discovery.dart b/packages/flutter_tools/lib/src/protocol_discovery.dart index 81789ee..33768ed 100644 --- a/packages/flutter_tools/lib/src/protocol_discovery.dart +++ b/packages/flutter_tools/lib/src/protocol_discovery.dart
@@ -48,7 +48,13 @@ StreamSubscription<String> _deviceLogSubscription; /// The discovered service URI. - Future<Uri> get uri => _completer.future; + /// + /// Port forwarding is only attempted when this is invoked, in case we never + /// need to port forward. + Future<Uri> get uri async { + final Uri rawUri = await _completer.future; + return await _forwardPort(rawUri); + } Future<void> cancel() => _stopScrapingLogs(); @@ -74,9 +80,8 @@ if (uri != null) { assert(!_completer.isCompleted); _stopScrapingLogs(); - _completer.complete(_forwardPort(uri)); + _completer.complete(uri); } - } Future<Uri> _forwardPort(Uri deviceUri) async {