From 2223e6a9f8bf24b023e8ae3103b50c37def3147e Mon Sep 17 00:00:00 2001 From: Tao Bao Date: Mon, 8 Jul 2019 18:07:22 -0700 Subject: minadbd sends heartbeat to rescue service for getprop command. We start minadbd and rescue services in two processes. In particular, minadbd handles the requests from host, then communicates with rescue service to do install/wipe works. When resuce service doesn't see any request in a pre-defined timeout (currently 300s), rescue service will exit to avoid endless waiting. This CL changes minadbd to additionally send a no-op command to rescue service as a heartbeat signal, so that host side can finish time-consuming operations (e.g. downloading over network) while keeping rescue service alive. Bug: 136457446 Test: Enter resuce mode on blueline. Send `adb rescue getprop ro.build.fingerprint` and check that rescue service doesn't exit. Test: Stop sending the getprop command. Check that rescue service exits after 300s. Change-Id: Ib9d5ed710cfa94ecfe6cf393a71a0b67b2539531 --- install/adb_install.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'install/adb_install.cpp') diff --git a/install/adb_install.cpp b/install/adb_install.cpp index 37280a34c..ed664429a 100644 --- a/install/adb_install.cpp +++ b/install/adb_install.cpp @@ -367,11 +367,13 @@ InstallResult ApplyFromAdb(Device* device, bool rescue_mode, Device::BuiltinActi "\n\nNow send the package you want to apply\n" "to the device with \"adb sideload \"...\n"); } else { - ui->Print("\n\nWaiting for rescue commands...\n"); command_map.emplace(MinadbdCommand::kWipeData, [&device]() { bool result = WipeData(device, false); return std::make_pair(result, true); }); + command_map.emplace(MinadbdCommand::kNoOp, []() { return std::make_pair(true, true); }); + + ui->Print("\n\nWaiting for rescue commands...\n"); } CreateMinadbdServiceAndExecuteCommands(ui, command_map, rescue_mode); -- cgit v1.2.3