Merge "adb: add better logging for connection failure."

This commit is contained in:
Treehugger Robot 2018-08-21 21:41:02 +00:00 committed by Gerrit Code Review
commit 627a74b714
3 changed files with 23 additions and 15 deletions

View File

@ -493,21 +493,7 @@ inline int network_local_server(const char* name, int namespace_id, int type, st
return _fd_set_error_str(socket_local_server(name, namespace_id, type), error);
}
inline 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) {
*error = gai_strerror(getaddrinfo_error);
} else {
*error = strerror(errno);
}
return -1;
}
int network_connect(const std::string& host, int port, int type, int timeout, std::string* error);
static __inline__ int adb_socket_accept(int serverfd, struct sockaddr* addr, socklen_t *addrlen)
{

View File

@ -17,11 +17,15 @@
#include "sysdeps/network.h"
#include <errno.h>
#include <netdb.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <string>
#include <android-base/logging.h>
#include <cutils/sockets.h>
#include "adb_unique_fd.h"
static void set_error(std::string* error) {
@ -124,3 +128,19 @@ int network_loopback_server(int port, int type, std::string* error) {
}
return rc;
}
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) {
*error = gai_strerror(getaddrinfo_error);
LOG(WARNING) << "failed to resolve host '" << host << "': " << *error;
} else {
*error = strerror(errno);
LOG(WARNING) << "failed to connect to '" << host << "': " << *error;
}
return -1;
}

View File

@ -74,6 +74,7 @@ std::tuple<unique_fd, int, std::string> tcp_connect(const std::string& address,
std::string host;
int port = DEFAULT_ADB_LOCAL_TRANSPORT_PORT;
if (!android::base::ParseNetAddress(address, &host, &port, &serial, response)) {
D("failed to parse address: '%s'", address.c_str());
return std::make_tuple(unique_fd(), port, serial);
}
@ -103,6 +104,7 @@ void connect_device(const std::string& address, std::string* response) {
return;
}
D("connection requested to '%s'", address.c_str());
unique_fd fd;
int port;
std::string serial;