diff --git a/adb/commandline.cpp b/adb/commandline.cpp index 9b3c3e275..f904df78d 100644 --- a/adb/commandline.cpp +++ b/adb/commandline.cpp @@ -1057,11 +1057,11 @@ static bool wait_for_device(const char* service, TransportType t, const char* se return false; } - if (components[3] != "bootloader" && components[3] != "device" && components[3] != "recovery" && - components[3] != "sideload") { + if (components[3] != "any" && components[3] != "bootloader" && components[3] != "device" && + components[3] != "recovery" && components[3] != "sideload") { fprintf(stderr, "adb: unknown state %s; " - "expected 'bootloader', 'device', 'recovery', or 'sideload'\n", + "expected 'any', 'bootloader', 'device', 'recovery', or 'sideload'\n", components[3].c_str()); return false; } diff --git a/adb/services.cpp b/adb/services.cpp index d5e963b72..67e8e414b 100644 --- a/adb/services.cpp +++ b/adb/services.cpp @@ -370,7 +370,7 @@ static void wait_for_state(int fd, void* data) { std::string error = "unknown error"; const char* serial = sinfo->serial.length() ? sinfo->serial.c_str() : NULL; atransport* t = acquire_one_transport(sinfo->transport_type, serial, &is_ambiguous, &error); - if (t != nullptr && t->connection_state == sinfo->state) { + if (t != nullptr && (sinfo->state == kCsAny || sinfo->state == t->connection_state)) { SendOkay(fd); break; } else if (!is_ambiguous) { @@ -534,6 +534,8 @@ asocket* host_service_to_socket(const char* name, const char* serial) { sinfo->state = kCsSideload; } else if (!strcmp(name, "-bootloader")) { sinfo->state = kCsBootloader; + } else if (!strcmp(name, "-any")) { + sinfo->state = kCsAny; } else { return nullptr; }