Loading adb/adb.cpp +7 −9 Original line number Diff line number Diff line Loading @@ -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; } Loading @@ -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); Loading @@ -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; Loading adb/adb_listeners.cpp +5 −5 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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); Loading Loading @@ -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; Loading adb/adb_unique_fd.h +14 −0 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -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 adb/client/transport_mdns.cpp +13 −16 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 { Loading Loading @@ -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; } Loading @@ -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); }); } Loading adb/daemon/auth.cpp +10 −8 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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) { Loading Loading @@ -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; Loading Loading @@ -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 Loading
adb/adb.cpp +7 −9 Original line number Diff line number Diff line Loading @@ -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; } Loading @@ -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); Loading @@ -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; Loading
adb/adb_listeners.cpp +5 −5 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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); Loading Loading @@ -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; Loading
adb/adb_unique_fd.h +14 −0 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -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
adb/client/transport_mdns.cpp +13 −16 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 { Loading Loading @@ -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; } Loading @@ -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); }); } Loading
adb/daemon/auth.cpp +10 −8 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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) { Loading Loading @@ -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; Loading Loading @@ -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