am 20e8b384: am c70ac57d: Merge "adb: poll for emulator connection."

* commit '20e8b384c6ad8718764e138cc9013623cad8f400':
  adb: poll for emulator connection.
This commit is contained in:
Yabin Cui 2015-08-03 18:01:57 +00:00 committed by Android Git Automerger
commit 4f38fea313
2 changed files with 16 additions and 17 deletions

View File

@ -68,13 +68,6 @@ static bool should_drop_privileges() {
#if defined(ALLOW_ADBD_ROOT)
char value[PROPERTY_VALUE_MAX];
// The emulator is never secure, so don't drop privileges there.
// TODO: this seems like a bug --- shouldn't the emulator behave like a device?
property_get("ro.kernel.qemu", value, "");
if (strcmp(value, "1") == 0) {
return false;
}
// The properties that affect `adb root` and `adb unroot` are ro.secure and
// ro.debuggable. In this context the names don't make the expected behavior
// particularly obvious.

View File

@ -94,6 +94,10 @@ int local_connect_arbitrary_ports(int console_port, int adb_port, std::string* e
int fd = -1;
#if ADB_HOST
if (find_emulator_transport_by_adb_port(adb_port) != nullptr) {
return -1;
}
const char *host = getenv("ADBHOST");
if (host) {
fd = network_connect(host, adb_port, SOCK_STREAM, 0, error);
@ -108,8 +112,10 @@ int local_connect_arbitrary_ports(int console_port, int adb_port, std::string* e
close_on_exec(fd);
disable_tcp_nagle(fd);
std::string serial = android::base::StringPrintf("emulator-%d", console_port);
register_socket_transport(fd, serial.c_str(), adb_port, 1);
return 0;
if (register_socket_transport(fd, serial.c_str(), adb_port, 1) == 0) {
return 0;
}
adb_close(fd);
}
return -1;
}
@ -118,16 +124,16 @@ int local_connect_arbitrary_ports(int console_port, int adb_port, std::string* e
static void *client_socket_thread(void *x)
{
#if ADB_HOST
int port = DEFAULT_ADB_LOCAL_TRANSPORT_PORT;
int count = ADB_LOCAL_TRANSPORT_MAX;
D("transport: client_socket_thread() starting\n");
while (true) {
int port = DEFAULT_ADB_LOCAL_TRANSPORT_PORT;
int count = ADB_LOCAL_TRANSPORT_MAX;
/* try to connect to any number of running emulator instances */
/* this is only done when ADB starts up. later, each new emulator */
/* will send a message to ADB to indicate that is is starting up */
for ( ; count > 0; count--, port += 2 ) {
local_connect(port);
// Try to connect to any number of running emulator instances.
for ( ; count > 0; count--, port += 2 ) {
local_connect(port);
}
sleep(1);
}
#endif
return 0;