From 573e67cbebeab965dea8e3326ff2303daa9e8aa6 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Tue, 30 Jul 2019 13:51:03 -0700 Subject: [PATCH] Restore default port for `adb connect`. The default port of 5555 was removed a while back, but the help text was never updated, and other contexts still allow a default port. Bug: https://issuetracker.google.com/128561172 Test: manual Change-Id: I6e5e6edeb2243386a0301c0a6cad569189f9910e --- adb/client/commandline.cpp | 9 ++++---- adb/socket_spec.cpp | 2 +- adb/socket_spec_test.cpp | 45 +++++++++++++++++++++++++++++++++----- 3 files changed, 44 insertions(+), 12 deletions(-) diff --git a/adb/client/commandline.cpp b/adb/client/commandline.cpp index 11a3dfd06..10539ac5e 100644 --- a/adb/client/commandline.cpp +++ b/adb/client/commandline.cpp @@ -96,9 +96,8 @@ static void help() { " version show version num\n" "\n" "networking:\n" - " connect HOST[:PORT] connect to a device via TCP/IP [default port=5555]\n" - " disconnect [HOST[:PORT]]\n" - " disconnect from given TCP/IP device [default port=5555], or all\n" + " connect HOST[:PORT] connect to a device via TCP/IP\n" + " disconnect [[HOST]:PORT] disconnect from given TCP/IP device, or all\n" " forward --list list all forward socket connections\n" " forward [--no-rebind] LOCAL REMOTE\n" " forward socket connection using:\n" @@ -1615,13 +1614,13 @@ int adb_commandline(int argc, const char** argv) { return adb_query_command(query); } else if (!strcmp(argv[0], "connect")) { - if (argc != 2) error_exit("usage: adb connect [:]"); + if (argc != 2) error_exit("usage: adb connect HOST[:PORT>]"); std::string query = android::base::StringPrintf("host:connect:%s", argv[1]); return adb_query_command(query); } else if (!strcmp(argv[0], "disconnect")) { - if (argc > 2) error_exit("usage: adb disconnect [[:]]"); + if (argc > 2) error_exit("usage: adb disconnect [HOST[:PORT]]"); std::string query = android::base::StringPrintf("host:disconnect:%s", (argc == 2) ? argv[1] : ""); diff --git a/adb/socket_spec.cpp b/adb/socket_spec.cpp index 1333724fc..98468b5cf 100644 --- a/adb/socket_spec.cpp +++ b/adb/socket_spec.cpp @@ -93,7 +93,7 @@ bool parse_tcp_socket_spec(std::string_view spec, std::string* hostname, int* po } } else { std::string addr(spec.substr(4)); - port_value = -1; + port_value = DEFAULT_ADB_LOCAL_TRANSPORT_PORT; // FIXME: ParseNetAddress rejects port 0. This currently doesn't hurt, because listening // on an address that isn't 'localhost' is unsupported. diff --git a/adb/socket_spec_test.cpp b/adb/socket_spec_test.cpp index f5ec0f15c..3a2f60c3b 100644 --- a/adb/socket_spec_test.cpp +++ b/adb/socket_spec_test.cpp @@ -20,38 +20,71 @@ #include -TEST(socket_spec, parse_tcp_socket_spec) { +TEST(socket_spec, parse_tcp_socket_spec_just_port) { std::string hostname, error, serial; int port; EXPECT_TRUE(parse_tcp_socket_spec("tcp:5037", &hostname, &port, &serial, &error)); EXPECT_EQ("", hostname); EXPECT_EQ(5037, port); EXPECT_EQ("", serial); +} - // Bad ports: +TEST(socket_spec, parse_tcp_socket_spec_bad_ports) { + std::string hostname, error, serial; + int port; EXPECT_FALSE(parse_tcp_socket_spec("tcp:", &hostname, &port, &serial, &error)); EXPECT_FALSE(parse_tcp_socket_spec("tcp:-1", &hostname, &port, &serial, &error)); EXPECT_FALSE(parse_tcp_socket_spec("tcp:65536", &hostname, &port, &serial, &error)); +} +TEST(socket_spec, parse_tcp_socket_spec_host_and_port) { + std::string hostname, error, serial; + int port; EXPECT_TRUE(parse_tcp_socket_spec("tcp:localhost:1234", &hostname, &port, &serial, &error)); EXPECT_EQ("localhost", hostname); EXPECT_EQ(1234, port); EXPECT_EQ("localhost:1234", serial); +} - EXPECT_FALSE(parse_tcp_socket_spec("tcp:localhost", &hostname, &port, &serial, &error)); +TEST(socket_spec, parse_tcp_socket_spec_host_no_port) { + std::string hostname, error, serial; + int port; + EXPECT_TRUE(parse_tcp_socket_spec("tcp:localhost", &hostname, &port, &serial, &error)); + EXPECT_EQ("localhost", hostname); + EXPECT_EQ(5555, port); + EXPECT_EQ("localhost:5555", serial); +} + +TEST(socket_spec, parse_tcp_socket_spec_host_bad_ports) { + std::string hostname, error, serial; + int port; EXPECT_FALSE(parse_tcp_socket_spec("tcp:localhost:", &hostname, &port, &serial, &error)); EXPECT_FALSE(parse_tcp_socket_spec("tcp:localhost:-1", &hostname, &port, &serial, &error)); EXPECT_FALSE(parse_tcp_socket_spec("tcp:localhost:65536", &hostname, &port, &serial, &error)); +} - // IPv6: +TEST(socket_spec, parse_tcp_socket_spec_ipv6_and_port) { + std::string hostname, error, serial; + int port; EXPECT_TRUE(parse_tcp_socket_spec("tcp:[::1]:1234", &hostname, &port, &serial, &error)); EXPECT_EQ("::1", hostname); EXPECT_EQ(1234, port); EXPECT_EQ("[::1]:1234", serial); +} +TEST(socket_spec, parse_tcp_socket_spec_ipv6_no_port) { + std::string hostname, error, serial; + int port; + EXPECT_TRUE(parse_tcp_socket_spec("tcp:::1", &hostname, &port, &serial, &error)); + EXPECT_EQ("::1", hostname); + EXPECT_EQ(5555, port); + EXPECT_EQ("[::1]:5555", serial); +} + +TEST(socket_spec, parse_tcp_socket_spec_ipv6_bad_ports) { + std::string hostname, error, serial; + int port; EXPECT_FALSE(parse_tcp_socket_spec("tcp:[::1]", &hostname, &port, &serial, &error)); EXPECT_FALSE(parse_tcp_socket_spec("tcp:[::1]:", &hostname, &port, &serial, &error)); EXPECT_FALSE(parse_tcp_socket_spec("tcp:[::1]:-1", &hostname, &port, &serial, &error)); - EXPECT_FALSE(parse_tcp_socket_spec("tcp:::1", &hostname, &port, &serial, &error)); - EXPECT_FALSE(parse_tcp_socket_spec("tcp:::1:1234", &hostname, &port, &serial, &error)); }