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

Commit 7a223584 authored by Josh Gao's avatar Josh Gao Committed by Gerrit Code Review
Browse files

Merge changes I465804fd,Ib5a684bb,If5e66570,I8471cc00,I8ba0a70a

* changes:
  adb: convert fdevent over to unique_fd.
  adb: move towards using unique_fd.
  adb: delete FDEVENT_DONTCLOSE.
  adb: remove fdevent_install, fdevent_remove.
  adb: fix uninitialized variable in AsyncServiceRef.
parents 2a1c0dd6 3b37fa25
Loading
Loading
Loading
Loading
+7 −9
Original line number Diff line number Diff line
@@ -885,9 +885,8 @@ int launch_server(const std::string& socket_spec) {
    }
#else /* !defined(_WIN32) */
    // set up a pipe so the child can tell us when it is ready.
    // fd[0] will be parent's end, and the child will write on fd[1]
    int fd[2];
    if (pipe(fd)) {
    unique_fd pipe_read, pipe_write;
    if (!Pipe(&pipe_read, &pipe_write)) {
        fprintf(stderr, "pipe failed in launch_server, errno: %d\n", errno);
        return -1;
    }
@@ -899,11 +898,10 @@ int launch_server(const std::string& socket_spec) {

    if (pid == 0) {
        // child side of the fork

        adb_close(fd[0]);
        pipe_read.reset();

        char reply_fd[30];
        snprintf(reply_fd, sizeof(reply_fd), "%d", fd[1]);
        snprintf(reply_fd, sizeof(reply_fd), "%d", pipe_write.get());
        // child process
        int result = execl(path.c_str(), "adb", "-L", socket_spec.c_str(), "fork-server", "server",
                           "--reply-fd", reply_fd, NULL);
@@ -913,10 +911,10 @@ int launch_server(const std::string& socket_spec) {
        // parent side of the fork
        char temp[3] = {};
        // wait for the "OK\n" message
        adb_close(fd[1]);
        int ret = adb_read(fd[0], temp, 3);
        pipe_write.reset();
        int ret = adb_read(pipe_read.get(), temp, 3);
        int saved_errno = errno;
        adb_close(fd[0]);
        pipe_read.reset();
        if (ret < 0) {
            fprintf(stderr, "could not read ok from ADB Server, errno = %d\n", saved_errno);
            return -1;
+5 −5
Original line number Diff line number Diff line
@@ -42,7 +42,7 @@ class alistener {
    alistener(const std::string& _local_name, const std::string& _connect_to);
    ~alistener();

    fdevent fde;
    fdevent* fde = nullptr;
    int fd = -1;

    std::string local_name;
@@ -60,7 +60,7 @@ alistener::alistener(const std::string& _local_name, const std::string& _connect

alistener::~alistener() {
    // Closes the corresponding fd.
    fdevent_remove(&fde);
    fdevent_destroy(fde);

    if (transport) {
        transport->RemoveDisconnect(&disconnect);
@@ -222,11 +222,11 @@ InstallStatus install_listener(const std::string& local_name, const char* connec

    close_on_exec(listener->fd);
    if (listener->connect_to == "*smartsocket*") {
        fdevent_install(&listener->fde, listener->fd, ss_listener_event_func, listener.get());
        listener->fde = fdevent_create(listener->fd, ss_listener_event_func, listener.get());
    } else {
        fdevent_install(&listener->fde, listener->fd, listener_event_func, listener.get());
        listener->fde = fdevent_create(listener->fd, listener_event_func, listener.get());
    }
    fdevent_set(&listener->fde, FDE_READ);
    fdevent_set(listener->fde, FDE_READ);

    listener->transport = transport;

+14 −0
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

#pragma once

#include <unistd.h>

#include <android-base/unique_fd.h>

// Helper to automatically close an FD when it goes out of scope.
@@ -24,3 +26,15 @@ struct AdbCloser {
};

using unique_fd = android::base::unique_fd_impl<AdbCloser>;

#if !defined(_WIN32)
inline bool Pipe(unique_fd* read, unique_fd* write) {
    int pipefd[2];
    if (pipe(pipefd) != 0) {
        return false;
    }
    read->reset(pipefd[0]);
    write->reset(pipefd[1]);
    return true;
}
#endif
+13 −16
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@
#include "sysdeps.h"

static DNSServiceRef service_ref;
static fdevent service_ref_fde;
static fdevent* service_ref_fde;

// Use adb_DNSServiceRefSockFD() instead of calling DNSServiceRefSockFD()
// directly so that the socket is put through the appropriate compatibility
@@ -73,22 +73,21 @@ class AsyncServiceRef {
        }

        DNSServiceRefDeallocate(sdRef_);
        fdevent_remove(&fde_);
        fdevent_destroy(fde_);
    }

  protected:
    DNSServiceRef sdRef_;

    void Initialize() {
        fdevent_install(&fde_, adb_DNSServiceRefSockFD(sdRef_),
                        pump_service_ref, &sdRef_);
        fdevent_set(&fde_, FDE_READ);
        fde_ = fdevent_create(adb_DNSServiceRefSockFD(sdRef_), pump_service_ref, &sdRef_);
        fdevent_set(fde_, FDE_READ);
        initialized_ = true;
    }

  private:
    bool initialized_;
    fdevent fde_;
    bool initialized_ = false;
    fdevent* fde_;
};

class ResolvedService : public AsyncServiceRef {
@@ -252,13 +251,11 @@ static void DNSSD_API register_mdns_transport(DNSServiceRef sdRef,
    if (errorCode != kDNSServiceErr_NoError) {
        D("Got error %d during mDNS browse.", errorCode);
        DNSServiceRefDeallocate(sdRef);
        fdevent_remove(&service_ref_fde);
        fdevent_destroy(service_ref_fde);
        return;
    }

    auto discovered = new DiscoveredService(interfaceIndex, serviceName,
                                            regtype, domain);

    auto discovered = new DiscoveredService(interfaceIndex, serviceName, regtype, domain);
    if (!discovered->Initialized()) {
        delete discovered;
    }
@@ -274,9 +271,9 @@ void init_mdns_transport_discovery_thread(void) {
    }

    fdevent_run_on_main_thread([]() {
        fdevent_install(&service_ref_fde, adb_DNSServiceRefSockFD(service_ref), pump_service_ref,
                        &service_ref);
        fdevent_set(&service_ref_fde, FDE_READ);
        service_ref_fde =
            fdevent_create(adb_DNSServiceRefSockFD(service_ref), pump_service_ref, &service_ref);
        fdevent_set(service_ref_fde, FDE_READ);
    });
}

+10 −8
Original line number Diff line number Diff line
@@ -35,8 +35,8 @@
#include <openssl/rsa.h>
#include <openssl/sha.h>

static fdevent listener_fde;
static fdevent framework_fde;
static fdevent* listener_fde = nullptr;
static fdevent* framework_fde = nullptr;
static int framework_fd = -1;

static void usb_disconnected(void* unused, atransport* t);
@@ -106,9 +106,11 @@ static void usb_disconnected(void* unused, atransport* t) {

static void framework_disconnected() {
    LOG(INFO) << "Framework disconnect";
    fdevent_remove(&framework_fde);
    if (framework_fde) {
        fdevent_destroy(framework_fde);
        framework_fd = -1;
    }
}

static void adbd_auth_event(int fd, unsigned events, void*) {
    if (events & FDE_READ) {
@@ -168,8 +170,8 @@ static void adbd_auth_listener(int fd, unsigned events, void* data) {
    }

    framework_fd = s;
    fdevent_install(&framework_fde, framework_fd, adbd_auth_event, nullptr);
    fdevent_add(&framework_fde, FDE_READ);
    framework_fde = fdevent_create(framework_fd, adbd_auth_event, nullptr);
    fdevent_add(framework_fde, FDE_READ);

    if (needs_retry) {
        needs_retry = false;
@@ -198,8 +200,8 @@ void adbd_auth_init(void) {
        return;
    }

    fdevent_install(&listener_fde, fd, adbd_auth_listener, NULL);
    fdevent_add(&listener_fde, FDE_READ);
    listener_fde = fdevent_create(fd, adbd_auth_listener, NULL);
    fdevent_add(listener_fde, FDE_READ);
}

void send_auth_request(atransport* t) {
Loading