Merge "adb: fix double close in wait-for-*."

This commit is contained in:
Treehugger Robot 2019-04-24 22:38:31 +00:00 committed by Gerrit Code Review
commit e923e5ef62
1 changed files with 4 additions and 6 deletions

View File

@ -100,7 +100,7 @@ struct state_info {
ConnectionState state;
};
static void wait_for_state(int fd, state_info* sinfo) {
static void wait_for_state(unique_fd fd, state_info* sinfo) {
D("wait_for_state %d", sinfo->state);
while (true) {
@ -122,7 +122,7 @@ static void wait_for_state(int fd, state_info* sinfo) {
}
if (!is_ambiguous) {
adb_pollfd pfd = {.fd = fd, .events = POLLIN};
adb_pollfd pfd = {.fd = fd.get(), .events = POLLIN};
int rc = adb_poll(&pfd, 1, 100);
if (rc < 0) {
SendFail(fd, error);
@ -140,7 +140,6 @@ static void wait_for_state(int fd, state_info* sinfo) {
}
}
adb_close(fd);
D("wait_for_state is done");
}
@ -241,9 +240,8 @@ asocket* host_service_to_socket(std::string_view name, std::string_view serial,
return nullptr;
}
unique_fd fd = create_service_thread("wait", [sinfo](int fd) {
wait_for_state(fd, sinfo.get());
});
unique_fd fd = create_service_thread(
"wait", [sinfo](unique_fd fd) { wait_for_state(std::move(fd), sinfo.get()); });
return create_local_socket(std::move(fd));
} else if (ConsumePrefix(&name, "connect:")) {
std::string host(name);