Merge "adbd: properly handle FUNCTIONFS_BIND without ENABLE." am: 22ff8e1909 am: b90db0840a

am: 313d214ec0

Change-Id: I63965d5bf49bdf63383bdd6aaac703c06fab5179
This commit is contained in:
Josh Gao 2019-03-11 17:15:56 -07:00 committed by android-build-merger
commit 2986dd4dfc

View file

@ -270,29 +270,15 @@ struct UsbFfsConnection : public Connection {
bool started = false;
bool running = true;
while (running) {
int timeout = -1;
if (!bound || !started) {
timeout = 5000 /*ms*/;
}
adb_pollfd pfd[2] = {
{ .fd = control_fd_.get(), .events = POLLIN, .revents = 0 },
{ .fd = monitor_event_fd_.get(), .events = POLLIN, .revents = 0 },
};
int rc = TEMP_FAILURE_RETRY(adb_poll(pfd, 2, timeout));
int rc = TEMP_FAILURE_RETRY(adb_poll(pfd, 2, -1));
if (rc == -1) {
PLOG(FATAL) << "poll on USB control fd failed";
} else if (rc == 0) {
// Something in the kernel presumably went wrong.
// Close our endpoints, wait for a bit, and then try again.
StopWorker();
aio_context_.reset();
read_fd_.reset();
write_fd_.reset();
control_fd_.reset();
std::this_thread::sleep_for(5s);
HandleError("didn't receive FUNCTIONFS_ENABLE, retrying");
return;
LOG(FATAL) << "poll on USB control fd returned 0";
}
if (pfd[1].revents) {