diff options
Diffstat (limited to 'meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/use-local-socket.patch')
-rw-r--r-- | meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/use-local-socket.patch | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/use-local-socket.patch b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/use-local-socket.patch new file mode 100644 index 000000000..7facd61b9 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-devtools/android-tools/android-tools/use-local-socket.patch @@ -0,0 +1,62 @@ +Subject: adb: Use local sockets where appropriate +Author: Hilko Bengen <bengen@debian.org> + +Upstream-Status: Inappropriate +--- + system/core/adb/adb.c | 6 +++++- + system/core/adb/adb_client.c | 5 +++-- + system/core/adb/transport_local.c | 3 ++- + 3 files changed, 10 insertions(+), 4 deletions(-) + +--- a/system/core/adb/adb.c ++++ b/system/core/adb/adb.c +@@ -1230,7 +1230,11 @@ int launch_server(int server_port) + */ + void build_local_name(char* target_str, size_t target_size, int server_port) + { +- snprintf(target_str, target_size, "tcp:%d", server_port); ++ if (gListenAll > 0) { ++ snprintf(target_str, target_size, "tcp:%d", server_port); ++ } else { ++ snprintf(target_str, target_size, "local:%d", server_port); ++ } + } + + #if !ADB_HOST +--- a/system/core/adb/adb_client.c ++++ b/system/core/adb/adb_client.c +@@ -185,12 +185,12 @@ int _adb_connect(const char *service) + strcpy(__adb_error, "service name too long"); + return -1; + } +- snprintf(tmp, sizeof tmp, "%04x", len); ++ snprintf(tmp, sizeof tmp, "%d", __adb_server_port); + + if (__adb_server_name) + fd = socket_network_client(__adb_server_name, __adb_server_port, SOCK_STREAM); + else +- fd = socket_loopback_client(__adb_server_port, SOCK_STREAM); ++ fd = socket_local_client(tmp, ANDROID_SOCKET_NAMESPACE_ABSTRACT, SOCK_STREAM); + + if(fd < 0) { + strcpy(__adb_error, "cannot connect to daemon"); +@@ -201,6 +201,7 @@ int _adb_connect(const char *service) + return -1; + } + ++ snprintf(tmp, sizeof tmp, "%04x", len); + if(writex(fd, tmp, 4) || writex(fd, service, len)) { + strcpy(__adb_error, "write failure during connection"); + adb_close(fd); +--- a/system/core/adb/transport_local.c ++++ b/system/core/adb/transport_local.c +@@ -121,7 +121,8 @@ int local_connect_arbitrary_ports(int co + } + #endif + if (fd < 0) { +- fd = socket_loopback_client(adb_port, SOCK_STREAM); ++ snprintf(buf, sizeof buf, "%d", adb_port); ++ fd = socket_local_client(buf, ANDROID_SOCKET_NAMESPACE_ABSTRACT, SOCK_STREAM); + } + + if (fd >= 0) { |