Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6f37e545 authored by Josh Gao's avatar Josh Gao Committed by android-build-merger
Browse files

Merge "adb: retry install_listener for a while."

am: 2361ab0d

Change-Id: I6d71a7badec82501a908fd0dd288897aa0797e49
parents 88aa74b8 2361ab0d
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@
#include <stdlib.h>
#include <unistd.h>

#include <thread>

#include <android-base/errors.h>
#include <android-base/file.h>
#include <android-base/logging.h>
@@ -33,6 +35,7 @@
#include "adb_listeners.h"
#include "adb_utils.h"
#include "commandline.h"
#include "sysdeps/chrono.h"
#include "transport.h"

static std::string GetLogFilePath() {
@@ -113,10 +116,20 @@ int adb_server_main(int is_daemon, const std::string& socket_spec, int ack_reply
    local_init(DEFAULT_ADB_LOCAL_TRANSPORT_PORT);

    std::string error;
    if (install_listener(socket_spec, "*smartsocket*", nullptr, 0, nullptr, &error)) {

    auto start = std::chrono::steady_clock::now();

    // If we told a previous adb server to quit because of version mismatch, we can get to this
    // point before it's finished exiting. Retry for a while to give it some time.
    while (install_listener(socket_spec, "*smartsocket*", nullptr, 0, nullptr, &error) !=
           INSTALL_STATUS_OK) {
        if (std::chrono::steady_clock::now() - start > 0.5s) {
            fatal("could not install *smartsocket* listener: %s", error.c_str());
        }

        std::this_thread::sleep_for(100ms);
    }

    if (is_daemon) {
        close_stdin();
        setup_daemon_logging();