diff options
author | Josh Gao <jmgao@google.com> | 2016-08-24 18:38:44 -0700 |
---|---|---|
committer | Josh Gao <jmgao@google.com> | 2016-08-25 17:12:26 -0700 |
commit | 8fb64005269ff0d34a1cef5d6b253cc280db7bad (patch) | |
tree | 72439d08da5b5e25029a715865f502ff4282c03a /services.cpp | |
parent | 5187fda02523eb63251c3a64f3cc48c274edb5c3 (diff) | |
download | adb-8fb64005269ff0d34a1cef5d6b253cc280db7bad.tar.gz |
adb: factor out socket specification.
Move the logic for string socket specification out to separate
functions to facilitate using arbitrary sockets for the adb command
socket.
Bug: http://b/30445394
Change-Id: Icd8fdb853272edc029fb3a0f5b18e941dc8ef52c
Test: adb_test, adbd_test, test_device.py
Diffstat (limited to 'services.cpp')
-rw-r--r-- | services.cpp | 35 |
1 files changed, 6 insertions, 29 deletions
diff --git a/services.cpp b/services.cpp index 3b212e9..2207a3e 100644 --- a/services.cpp +++ b/services.cpp @@ -49,6 +49,7 @@ #include "remount_service.h" #include "services.h" #include "shell_service.h" +#include "socket_spec.h" #include "sysdeps.h" #include "transport.h" @@ -278,36 +279,12 @@ static int create_service_thread(void (*func)(int, void *), void *cookie) int service_to_fd(const char* name, const atransport* transport) { int ret = -1; - if(!strncmp(name, "tcp:", 4)) { - int port = atoi(name + 4); - name = strchr(name + 4, ':'); - if(name == 0) { - std::string error; - ret = network_loopback_client(port, SOCK_STREAM, &error); - if (ret >= 0) - disable_tcp_nagle(ret); - } else { -#if ADB_HOST - std::string error; - ret = network_connect(name + 1, port, SOCK_STREAM, 0, &error); -#else - return -1; -#endif + if (is_socket_spec(name)) { + std::string error; + ret = socket_spec_connect(name, &error); + if (ret < 0) { + LOG(ERROR) << "failed to connect to socket '" << name << "': " << error; } -#if !defined(_WIN32) /* winsock doesn't implement unix domain sockets */ - } else if(!strncmp(name, "local:", 6)) { - ret = socket_local_client(name + 6, - ANDROID_SOCKET_NAMESPACE_RESERVED, SOCK_STREAM); - } else if(!strncmp(name, "localreserved:", 14)) { - ret = socket_local_client(name + 14, - ANDROID_SOCKET_NAMESPACE_RESERVED, SOCK_STREAM); - } else if(!strncmp(name, "localabstract:", 14)) { - ret = socket_local_client(name + 14, - ANDROID_SOCKET_NAMESPACE_ABSTRACT, SOCK_STREAM); - } else if(!strncmp(name, "localfilesystem:", 16)) { - ret = socket_local_client(name + 16, - ANDROID_SOCKET_NAMESPACE_FILESYSTEM, SOCK_STREAM); -#endif #if !ADB_HOST } else if(!strncmp("dev:", name, 4)) { ret = unix_open(name + 4, O_RDWR | O_CLOEXEC); |