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

Commit 9727a6a0 authored by Elliott Hughes's avatar Elliott Hughes Committed by Gerrit Code Review
Browse files

Merge "Report getaddrinfo failures correctly."

parents 89cc750e 381cfa9a
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