Loading adb/adb.c +21 −7 Original line number Diff line number Diff line Loading @@ -693,7 +693,7 @@ void start_device_log(void) #endif #if ADB_HOST int launch_server() int launch_server(int server_port) { #ifdef HAVE_WIN32_PROC /* we need to start the server in the background */ Loading Loading @@ -828,7 +828,17 @@ int launch_server() } #endif int adb_main(int is_daemon) /* Constructs a local name of form tcp:port. * target_str points to the target string, it's content will be overwritten. * target_size is the capacity of the target string. * server_port is the port number to use for the local name. */ void build_local_name(char* target_str, size_t target_size, int server_port) { snprintf(target_str, target_size, "tcp:%d", server_port); } int adb_main(int is_daemon, int server_port) { #if !ADB_HOST int secure = 0; Loading @@ -851,9 +861,11 @@ int adb_main(int is_daemon) HOST = 1; usb_vendors_init(); usb_init(); local_init(ADB_LOCAL_TRANSPORT_PORT); local_init(DEFAULT_ADB_LOCAL_TRANSPORT_PORT); if(install_listener("tcp:5037", "*smartsocket*", NULL)) { char local_name[30]; build_local_name(local_name, sizeof(local_name), server_port); if(install_listener(local_name, "*smartsocket*", NULL)) { exit(1); } #else Loading @@ -879,7 +891,7 @@ int adb_main(int is_daemon) } } /* don't listen on port 5037 if we are running in secure mode */ /* don't listen on a port (default 5037) if running in secure mode */ /* don't run as root if we are running in secure mode */ if (secure) { struct __user_cap_header_struct header; Loading Loading @@ -912,9 +924,11 @@ int adb_main(int is_daemon) cap.inheritable = 0; capset(&header, &cap); D("Local port 5037 disabled\n"); D("Local port disabled\n"); } else { if(install_listener("tcp:5037", "*smartsocket*", NULL)) { char[30] local_name; build_local_name(local_name, sizeof(local_name), server_port); if(install_listener(&local_name, "*smartsocket*", NULL)) { exit(1); } } Loading adb/adb.h +4 −4 Original line number Diff line number Diff line Loading @@ -237,8 +237,8 @@ void handle_packet(apacket *p, atransport *t); void send_packet(apacket *p, atransport *t); void get_my_path(char *s, size_t maxLen); int launch_server(); int adb_main(int is_daemon); int launch_server(int server_port); int adb_main(int is_daemon, int server_port); /* transports are ref-counted Loading Loading @@ -358,8 +358,8 @@ typedef enum { #define print_packet(tag,p) do {} while (0) #endif #define ADB_PORT 5037 #define ADB_LOCAL_TRANSPORT_PORT 5555 #define DEFAULT_ADB_PORT 5037 #define DEFAULT_ADB_LOCAL_TRANSPORT_PORT 5555 #define ADB_CLASS 0xff #define ADB_SUBCLASS 0x42 Loading adb/adb_client.c +11 −5 Original line number Diff line number Diff line Loading @@ -16,12 +16,19 @@ static transport_type __adb_transport = kTransportAny; static const char* __adb_serial = NULL; static int __adb_server_port = DEFAULT_ADB_PORT; void adb_set_transport(transport_type type, const char* serial) { __adb_transport = type; __adb_serial = serial; } void adb_set_tcp_specifics(int server_port) { __adb_server_port = server_port; } int adb_get_emulator_console_port(void) { const char* serial = __adb_serial; Loading Loading @@ -174,7 +181,7 @@ int _adb_connect(const char *service) } snprintf(tmp, sizeof tmp, "%04x", len); fd = socket_loopback_client(ADB_PORT, SOCK_STREAM); fd = socket_loopback_client(__adb_server_port, SOCK_STREAM); if(fd < 0) { strcpy(__adb_error, "cannot connect to daemon"); return -2; Loading Loading @@ -204,9 +211,10 @@ int adb_connect(const char *service) int fd = _adb_connect("host:version"); if(fd == -2) { fprintf(stdout,"* daemon not running. starting it now *\n"); fprintf(stdout,"* daemon not running. starting it now on port %d *\n", __adb_server_port); start_server: if(launch_server(0)) { if(launch_server(__adb_server_port)) { fprintf(stderr,"* failed to start daemon *\n"); return -1; } else { Loading Loading @@ -314,5 +322,3 @@ oops: adb_close(fd); return 0; } adb/adb_client.h +4 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,10 @@ char *adb_query(const char *service); */ void adb_set_transport(transport_type type, const char* serial); /* Set TCP specifics of the transport to use */ void adb_set_tcp_specifics(int server_port); /* 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 +21 −6 Original line number Diff line number Diff line Loading @@ -761,6 +761,7 @@ int adb_commandline(int argc, char **argv) int quote; transport_type ttype = kTransportAny; char* serial = NULL; char* server_port_str = NULL; /* If defined, this should be an absolute path to * the directory containing all of the various system images Loading @@ -776,6 +777,19 @@ int adb_commandline(int argc, char **argv) serial = getenv("ANDROID_SERIAL"); /* Validate and assign the server port */ server_port_str = getenv("ANDROID_ADB_SERVER_PORT"); 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) { fprintf(stderr, "adb: Env var ANDROID_ADB_SERVER_PORT must be a positive number. Got \"%s\"\n", server_port_str); return usage(); } } /* modifiers and flags */ while(argc > 0) { if(!strcmp(argv[0],"nodaemon")) { Loading Loading @@ -805,7 +819,7 @@ int adb_commandline(int argc, char **argv) if (isdigit(argv[0][2])) { serial = argv[0] + 2; } else { if(argc < 2) return usage(); if(argc < 2 || argv[0][2] != '\0') return usage(); serial = argv[1]; argc--; argv++; Loading @@ -823,12 +837,13 @@ int adb_commandline(int argc, char **argv) } adb_set_transport(ttype, serial); adb_set_tcp_specifics(server_port); if ((argc > 0) && (!strcmp(argv[0],"server"))) { if (no_daemon || is_daemon) { r = adb_main(is_daemon); r = adb_main(is_daemon, server_port); } else { r = launch_server(); r = launch_server(server_port); } if(r) { fprintf(stderr,"* could not start server *\n"); Loading Loading
adb/adb.c +21 −7 Original line number Diff line number Diff line Loading @@ -693,7 +693,7 @@ void start_device_log(void) #endif #if ADB_HOST int launch_server() int launch_server(int server_port) { #ifdef HAVE_WIN32_PROC /* we need to start the server in the background */ Loading Loading @@ -828,7 +828,17 @@ int launch_server() } #endif int adb_main(int is_daemon) /* Constructs a local name of form tcp:port. * target_str points to the target string, it's content will be overwritten. * target_size is the capacity of the target string. * server_port is the port number to use for the local name. */ void build_local_name(char* target_str, size_t target_size, int server_port) { snprintf(target_str, target_size, "tcp:%d", server_port); } int adb_main(int is_daemon, int server_port) { #if !ADB_HOST int secure = 0; Loading @@ -851,9 +861,11 @@ int adb_main(int is_daemon) HOST = 1; usb_vendors_init(); usb_init(); local_init(ADB_LOCAL_TRANSPORT_PORT); local_init(DEFAULT_ADB_LOCAL_TRANSPORT_PORT); if(install_listener("tcp:5037", "*smartsocket*", NULL)) { char local_name[30]; build_local_name(local_name, sizeof(local_name), server_port); if(install_listener(local_name, "*smartsocket*", NULL)) { exit(1); } #else Loading @@ -879,7 +891,7 @@ int adb_main(int is_daemon) } } /* don't listen on port 5037 if we are running in secure mode */ /* don't listen on a port (default 5037) if running in secure mode */ /* don't run as root if we are running in secure mode */ if (secure) { struct __user_cap_header_struct header; Loading Loading @@ -912,9 +924,11 @@ int adb_main(int is_daemon) cap.inheritable = 0; capset(&header, &cap); D("Local port 5037 disabled\n"); D("Local port disabled\n"); } else { if(install_listener("tcp:5037", "*smartsocket*", NULL)) { char[30] local_name; build_local_name(local_name, sizeof(local_name), server_port); if(install_listener(&local_name, "*smartsocket*", NULL)) { exit(1); } } Loading
adb/adb.h +4 −4 Original line number Diff line number Diff line Loading @@ -237,8 +237,8 @@ void handle_packet(apacket *p, atransport *t); void send_packet(apacket *p, atransport *t); void get_my_path(char *s, size_t maxLen); int launch_server(); int adb_main(int is_daemon); int launch_server(int server_port); int adb_main(int is_daemon, int server_port); /* transports are ref-counted Loading Loading @@ -358,8 +358,8 @@ typedef enum { #define print_packet(tag,p) do {} while (0) #endif #define ADB_PORT 5037 #define ADB_LOCAL_TRANSPORT_PORT 5555 #define DEFAULT_ADB_PORT 5037 #define DEFAULT_ADB_LOCAL_TRANSPORT_PORT 5555 #define ADB_CLASS 0xff #define ADB_SUBCLASS 0x42 Loading
adb/adb_client.c +11 −5 Original line number Diff line number Diff line Loading @@ -16,12 +16,19 @@ static transport_type __adb_transport = kTransportAny; static const char* __adb_serial = NULL; static int __adb_server_port = DEFAULT_ADB_PORT; void adb_set_transport(transport_type type, const char* serial) { __adb_transport = type; __adb_serial = serial; } void adb_set_tcp_specifics(int server_port) { __adb_server_port = server_port; } int adb_get_emulator_console_port(void) { const char* serial = __adb_serial; Loading Loading @@ -174,7 +181,7 @@ int _adb_connect(const char *service) } snprintf(tmp, sizeof tmp, "%04x", len); fd = socket_loopback_client(ADB_PORT, SOCK_STREAM); fd = socket_loopback_client(__adb_server_port, SOCK_STREAM); if(fd < 0) { strcpy(__adb_error, "cannot connect to daemon"); return -2; Loading Loading @@ -204,9 +211,10 @@ int adb_connect(const char *service) int fd = _adb_connect("host:version"); if(fd == -2) { fprintf(stdout,"* daemon not running. starting it now *\n"); fprintf(stdout,"* daemon not running. starting it now on port %d *\n", __adb_server_port); start_server: if(launch_server(0)) { if(launch_server(__adb_server_port)) { fprintf(stderr,"* failed to start daemon *\n"); return -1; } else { Loading Loading @@ -314,5 +322,3 @@ oops: adb_close(fd); return 0; }
adb/adb_client.h +4 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,10 @@ char *adb_query(const char *service); */ void adb_set_transport(transport_type type, const char* serial); /* Set TCP specifics of the transport to use */ void adb_set_tcp_specifics(int server_port); /* 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 +21 −6 Original line number Diff line number Diff line Loading @@ -761,6 +761,7 @@ int adb_commandline(int argc, char **argv) int quote; transport_type ttype = kTransportAny; char* serial = NULL; char* server_port_str = NULL; /* If defined, this should be an absolute path to * the directory containing all of the various system images Loading @@ -776,6 +777,19 @@ int adb_commandline(int argc, char **argv) serial = getenv("ANDROID_SERIAL"); /* Validate and assign the server port */ server_port_str = getenv("ANDROID_ADB_SERVER_PORT"); 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) { fprintf(stderr, "adb: Env var ANDROID_ADB_SERVER_PORT must be a positive number. Got \"%s\"\n", server_port_str); return usage(); } } /* modifiers and flags */ while(argc > 0) { if(!strcmp(argv[0],"nodaemon")) { Loading Loading @@ -805,7 +819,7 @@ int adb_commandline(int argc, char **argv) if (isdigit(argv[0][2])) { serial = argv[0] + 2; } else { if(argc < 2) return usage(); if(argc < 2 || argv[0][2] != '\0') return usage(); serial = argv[1]; argc--; argv++; Loading @@ -823,12 +837,13 @@ int adb_commandline(int argc, char **argv) } adb_set_transport(ttype, serial); adb_set_tcp_specifics(server_port); if ((argc > 0) && (!strcmp(argv[0],"server"))) { if (no_daemon || is_daemon) { r = adb_main(is_daemon); r = adb_main(is_daemon, server_port); } else { r = launch_server(); r = launch_server(server_port); } if(r) { fprintf(stderr,"* could not start server *\n"); Loading