Loading adb/adb.c +11 −2 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ ADB_MUTEX_DEFINE( D_lock ); #endif int HOST = 0; int gListenAll = 0; static int auth_enabled = 0; Loading Loading @@ -701,7 +702,13 @@ int local_name_to_fd(const char *name) if(!strncmp("tcp:", name, 4)){ int ret; port = atoi(name + 4); if (gListenAll > 0) { ret = socket_inaddr_any_server(port, SOCK_STREAM); } else { ret = socket_loopback_server(port, SOCK_STREAM); } return ret; } #ifndef HAVE_WIN32_IPC /* no Unix-domain sockets on Win32 */ Loading Loading @@ -1079,8 +1086,10 @@ int launch_server(int server_port) dup2(fd[1], STDERR_FILENO); adb_close(fd[1]); char str_port[30]; snprintf(str_port, sizeof(str_port), "%d", server_port); // child process int result = execl(path, "adb", "fork-server", "server", NULL); int result = execl(path, "adb", "-P", str_port, "fork-server", "server", NULL); // this should not return fprintf(stderr, "OOPS! execl returned %d, errno: %d\n", result, errno); } else { Loading adb/adb_client.c +16 −3 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ static transport_type __adb_transport = kTransportAny; static const char* __adb_serial = NULL; static int __adb_server_port = DEFAULT_ADB_PORT; static const char* __adb_server_name = NULL; void adb_set_transport(transport_type type, const char* serial) { Loading @@ -29,6 +30,11 @@ void adb_set_tcp_specifics(int server_port) __adb_server_port = server_port; } void adb_set_tcp_name(const char* hostname) { __adb_server_name = hostname; } int adb_get_emulator_console_port(void) { const char* serial = __adb_serial; Loading Loading @@ -181,7 +187,11 @@ int _adb_connect(const char *service) } snprintf(tmp, sizeof tmp, "%04x", len); 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); if(fd < 0) { strcpy(__adb_error, "cannot connect to daemon"); return -2; Loading Loading @@ -212,7 +222,10 @@ int adb_connect(const char *service) int fd = _adb_connect("host:version"); D("adb_connect: service %s\n", service); if(fd == -2) { if(fd == -2 && __adb_server_name) { fprintf(stderr,"** Cannot start server on remote host\n"); return fd; } else if(fd == -2) { fprintf(stdout,"* daemon not running. starting it now on port %d *\n", __adb_server_port); start_server: Loading Loading @@ -266,7 +279,7 @@ int adb_connect(const char *service) fd = _adb_connect(service); if(fd == -2) { fprintf(stderr,"** daemon still not running"); fprintf(stderr,"** daemon still not running\n"); } D("adb_connect: return fd %d\n", fd); Loading adb/adb_client.h +4 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,10 @@ void adb_set_transport(transport_type type, const char* serial); */ void adb_set_tcp_specifics(int server_port); /* Set TCP Hostname of the transport to use */ void adb_set_tcp_name(const char* hostname); /* Return the console port of the currently connected emulator (if any) * of -1 if there is no emulator, and -2 if there is more than one. * assumes adb_set_transport() was alled previously... Loading adb/commandline.c +42 −2 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ int install_app(transport_type transport, char* serial, int argc, char** argv); int uninstall_app(transport_type transport, char* serial, int argc, char** argv); static const char *gProductOutPath = NULL; extern int gListenAll; static char *product_file(const char *extra) { Loading Loading @@ -80,6 +81,7 @@ void help() fprintf(stderr, "\n" " -a - directs adb to listen on all interfaces for a connection\n" " -d - directs command to the only connected USB device\n" " returns an error if more than one USB device is present.\n" " -e - directs command to the only running emulator.\n" Loading @@ -93,6 +95,8 @@ void help() " If -p is not specified, the ANDROID_PRODUCT_OUT\n" " environment variable is used, which must\n" " be an absolute path.\n" " -H - Name of adb server host (default: localhost)\n" " -P - Port of adb server (default: 5037)\n" " devices [-l] - list all connected devices\n" " ('-l' will also list device qualifiers)\n" " connect <host>[:<port>] - connect to a device via TCP/IP\n" Loading Loading @@ -946,9 +950,9 @@ int adb_commandline(int argc, char **argv) int server_port = DEFAULT_ADB_PORT; if (server_port_str && strlen(server_port_str) > 0) { server_port = (int) strtol(server_port_str, NULL, 0); if (server_port <= 0) { if (server_port <= 0 || server_port > 65535) { fprintf(stderr, "adb: Env var ANDROID_ADB_SERVER_PORT must be a positive number. Got \"%s\"\n", "adb: Env var ANDROID_ADB_SERVER_PORT must be a positive number less than 65535. Got \"%s\"\n", server_port_str); return usage(); } Loading Loading @@ -994,6 +998,42 @@ int adb_commandline(int argc, char **argv) ttype = kTransportUsb; } else if (!strcmp(argv[0],"-e")) { ttype = kTransportLocal; } else if (!strcmp(argv[0],"-a")) { gListenAll = 1; } else if(!strncmp(argv[0], "-H", 2)) { const char *hostname = NULL; if (argv[0][2] == '\0') { if (argc < 2) return usage(); hostname = argv[1]; argc--; argv++; } else { hostname = argv[0] + 2; } adb_set_tcp_name(hostname); } else if(!strncmp(argv[0], "-P", 2)) { if (argv[0][2] == '\0') { if (argc < 2) return usage(); server_port_str = argv[1]; argc--; argv++; } else { server_port_str = argv[0] + 2; } if (strlen(server_port_str) > 0) { server_port = (int) strtol(server_port_str, NULL, 0); if (server_port <= 0 || server_port > 65535) { fprintf(stderr, "adb: port number must be a positive number less than 65536. Got \"%s\"\n", server_port_str); return usage(); } } else { fprintf(stderr, "adb: port number must be a positive number less than 65536. Got empty string.\n"); return usage(); } } else { /* out of recognized modifiers and flags */ break; Loading Loading
adb/adb.c +11 −2 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ ADB_MUTEX_DEFINE( D_lock ); #endif int HOST = 0; int gListenAll = 0; static int auth_enabled = 0; Loading Loading @@ -701,7 +702,13 @@ int local_name_to_fd(const char *name) if(!strncmp("tcp:", name, 4)){ int ret; port = atoi(name + 4); if (gListenAll > 0) { ret = socket_inaddr_any_server(port, SOCK_STREAM); } else { ret = socket_loopback_server(port, SOCK_STREAM); } return ret; } #ifndef HAVE_WIN32_IPC /* no Unix-domain sockets on Win32 */ Loading Loading @@ -1079,8 +1086,10 @@ int launch_server(int server_port) dup2(fd[1], STDERR_FILENO); adb_close(fd[1]); char str_port[30]; snprintf(str_port, sizeof(str_port), "%d", server_port); // child process int result = execl(path, "adb", "fork-server", "server", NULL); int result = execl(path, "adb", "-P", str_port, "fork-server", "server", NULL); // this should not return fprintf(stderr, "OOPS! execl returned %d, errno: %d\n", result, errno); } else { Loading
adb/adb_client.c +16 −3 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ static transport_type __adb_transport = kTransportAny; static const char* __adb_serial = NULL; static int __adb_server_port = DEFAULT_ADB_PORT; static const char* __adb_server_name = NULL; void adb_set_transport(transport_type type, const char* serial) { Loading @@ -29,6 +30,11 @@ void adb_set_tcp_specifics(int server_port) __adb_server_port = server_port; } void adb_set_tcp_name(const char* hostname) { __adb_server_name = hostname; } int adb_get_emulator_console_port(void) { const char* serial = __adb_serial; Loading Loading @@ -181,7 +187,11 @@ int _adb_connect(const char *service) } snprintf(tmp, sizeof tmp, "%04x", len); 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); if(fd < 0) { strcpy(__adb_error, "cannot connect to daemon"); return -2; Loading Loading @@ -212,7 +222,10 @@ int adb_connect(const char *service) int fd = _adb_connect("host:version"); D("adb_connect: service %s\n", service); if(fd == -2) { if(fd == -2 && __adb_server_name) { fprintf(stderr,"** Cannot start server on remote host\n"); return fd; } else if(fd == -2) { fprintf(stdout,"* daemon not running. starting it now on port %d *\n", __adb_server_port); start_server: Loading Loading @@ -266,7 +279,7 @@ int adb_connect(const char *service) fd = _adb_connect(service); if(fd == -2) { fprintf(stderr,"** daemon still not running"); fprintf(stderr,"** daemon still not running\n"); } D("adb_connect: return fd %d\n", fd); Loading
adb/adb_client.h +4 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,10 @@ void adb_set_transport(transport_type type, const char* serial); */ void adb_set_tcp_specifics(int server_port); /* Set TCP Hostname of the transport to use */ void adb_set_tcp_name(const char* hostname); /* Return the console port of the currently connected emulator (if any) * of -1 if there is no emulator, and -2 if there is more than one. * assumes adb_set_transport() was alled previously... Loading
adb/commandline.c +42 −2 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ int install_app(transport_type transport, char* serial, int argc, char** argv); int uninstall_app(transport_type transport, char* serial, int argc, char** argv); static const char *gProductOutPath = NULL; extern int gListenAll; static char *product_file(const char *extra) { Loading Loading @@ -80,6 +81,7 @@ void help() fprintf(stderr, "\n" " -a - directs adb to listen on all interfaces for a connection\n" " -d - directs command to the only connected USB device\n" " returns an error if more than one USB device is present.\n" " -e - directs command to the only running emulator.\n" Loading @@ -93,6 +95,8 @@ void help() " If -p is not specified, the ANDROID_PRODUCT_OUT\n" " environment variable is used, which must\n" " be an absolute path.\n" " -H - Name of adb server host (default: localhost)\n" " -P - Port of adb server (default: 5037)\n" " devices [-l] - list all connected devices\n" " ('-l' will also list device qualifiers)\n" " connect <host>[:<port>] - connect to a device via TCP/IP\n" Loading Loading @@ -946,9 +950,9 @@ int adb_commandline(int argc, char **argv) int server_port = DEFAULT_ADB_PORT; if (server_port_str && strlen(server_port_str) > 0) { server_port = (int) strtol(server_port_str, NULL, 0); if (server_port <= 0) { if (server_port <= 0 || server_port > 65535) { fprintf(stderr, "adb: Env var ANDROID_ADB_SERVER_PORT must be a positive number. Got \"%s\"\n", "adb: Env var ANDROID_ADB_SERVER_PORT must be a positive number less than 65535. Got \"%s\"\n", server_port_str); return usage(); } Loading Loading @@ -994,6 +998,42 @@ int adb_commandline(int argc, char **argv) ttype = kTransportUsb; } else if (!strcmp(argv[0],"-e")) { ttype = kTransportLocal; } else if (!strcmp(argv[0],"-a")) { gListenAll = 1; } else if(!strncmp(argv[0], "-H", 2)) { const char *hostname = NULL; if (argv[0][2] == '\0') { if (argc < 2) return usage(); hostname = argv[1]; argc--; argv++; } else { hostname = argv[0] + 2; } adb_set_tcp_name(hostname); } else if(!strncmp(argv[0], "-P", 2)) { if (argv[0][2] == '\0') { if (argc < 2) return usage(); server_port_str = argv[1]; argc--; argv++; } else { server_port_str = argv[0] + 2; } if (strlen(server_port_str) > 0) { server_port = (int) strtol(server_port_str, NULL, 0); if (server_port <= 0 || server_port > 65535) { fprintf(stderr, "adb: port number must be a positive number less than 65536. Got \"%s\"\n", server_port_str); return usage(); } } else { fprintf(stderr, "adb: port number must be a positive number less than 65536. Got empty string.\n"); return usage(); } } else { /* out of recognized modifiers and flags */ break; Loading