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

Commit 1f76c1ab authored by Elliott Hughes's avatar Elliott Hughes Committed by Android Git Automerger
Browse files

am 9727a6a0: Merge "Report getaddrinfo failures correctly."

* commit '9727a6a0':
  Report getaddrinfo failures correctly.
parents f5defe75 9727a6a0
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -22,6 +22,8 @@

#include <base/macros.h>

#include <string>

#include "adb_trace.h"
#include "fdevent.h"

@@ -357,8 +359,8 @@ void put_apacket(apacket *p);


void local_init(int port);
int  local_connect(int  port);
int  local_connect_arbitrary_ports(int console_port, int adb_port);
void local_connect(int port);
int  local_connect_arbitrary_ports(int console_port, int adb_port, std::string* error);

/* usb host/client interface */
void usb_init();
+14 −5
Original line number Diff line number Diff line
@@ -33,8 +33,10 @@

#include <base/stringprintf.h>
#include <base/strings.h>
#include <cutils/sockets.h>

#include "adb_io.h"
#include "adb_utils.h"

static TransportType __adb_transport = kTransportAny;
static const char* __adb_serial = NULL;
@@ -152,14 +154,21 @@ int _adb_connect(const std::string& service, std::string* error) {

    int fd;
    if (__adb_server_name) {
        fd = socket_network_client(__adb_server_name, __adb_server_port, SOCK_STREAM);
        std::string reason;
        fd = network_connect(__adb_server_name, __adb_server_port, SOCK_STREAM, 0, &reason);
        if (fd == -1) {
            *error = android::base::StringPrintf("can't connect to %s:%d: %s",
                                                 __adb_server_name, __adb_server_port,
                                                 reason.c_str());
            return -2;
        }
    } else {
        fd = socket_loopback_client(__adb_server_port, SOCK_STREAM);
    }
    if (fd < 0) {
        if (fd == -1) {
            *error = perror_str("cannot connect to daemon");
            return -2;
        }
    }

    if (memcmp(&service[0],"host",4) != 0 && switch_socket_transport(fd, error)) {
        return -1;
+1 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@
#include <stdlib.h>

#include <base/stringprintf.h>
#include <cutils/sockets.h>

#include "sysdeps.h"
#include "transport.h"
+17 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@

#include "adb_utils.h"

#include <netdb.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>
@@ -28,6 +29,7 @@
#include <base/logging.h>
#include <base/stringprintf.h>
#include <base/strings.h>
#include <cutils/sockets.h>

#include "adb_trace.h"
#include "sysdeps.h"
@@ -158,3 +160,18 @@ bool parse_host_and_port(const std::string& address,
               << " (" << *canonical_address << ")";
    return true;
}

int network_connect(const std::string& host, int port, int type, int timeout, std::string* error) {
    int getaddrinfo_error = 0;
    int fd = socket_network_client_timeout(host.c_str(), port, type, timeout, &getaddrinfo_error);
    if (fd != -1) {
        return fd;
    }
    if (getaddrinfo_error != 0) {
        // TODO: not thread safe on Win32.
        *error = gai_strerror(getaddrinfo_error);
    } else {
        *error = strerror(errno);
    }
    return -1;
}
+2 −0
Original line number Diff line number Diff line
@@ -39,4 +39,6 @@ bool parse_host_and_port(const std::string& address,
                         std::string* host, int* port,
                         std::string* error);

int network_connect(const std::string& host, int port, int type, int timeout, std::string* error);

#endif
Loading