diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-01-20 00:02:55 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-01-20 00:02:55 +0000 |
commit | 8a82ff71469a429f7fc394227434f979518effc1 (patch) | |
tree | f1c9c07e021abdc5029af6fe7d470e4fec82b4f8 | |
parent | 44675c0e4a567c99e867273a67f5b00b6fd79f6d (diff) | |
parent | 7d0a4c1aab3b76ec82f6860632771a2bd1a20f83 (diff) | |
download | cuttlefish-android13-d2-release.tar.gz |
Snap for 9509315 from 7d0a4c1aab3b76ec82f6860632771a2bd1a20f83 to tm-d2-releaseandroid-13.0.0_r55android13-d2-release
Change-Id: I35ea8ec1f44c37c1ab650ef345687e051ac47ddc
-rw-r--r-- | guest/commands/bt_vhci_forwarder/main.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/guest/commands/bt_vhci_forwarder/main.cpp b/guest/commands/bt_vhci_forwarder/main.cpp index 2f1aab2e7..d1bb58850 100644 --- a/guest/commands/bt_vhci_forwarder/main.cpp +++ b/guest/commands/bt_vhci_forwarder/main.cpp @@ -128,6 +128,9 @@ int main(int argc, char** argv) { send(vhci_fd, HCI_ISODATA_PKT, raw_iso.data(), raw_iso.size()); }, []() { LOG(INFO) << "HCI socket device disconnected"; }); + + bool before_first_command = true; + while (true) { int ret = TEMP_FAILURE_RETRY(poll(fds, 2, -1)); if (ret < 0) { @@ -141,6 +144,7 @@ int main(int argc, char** argv) { if (c < 0) { PLOG(ERROR) << "vhci to virtio-console failed"; } + before_first_command = false; } if (fds[1].revents & POLLHUP) { LOG(ERROR) << "PollHUP"; @@ -148,6 +152,16 @@ int main(int argc, char** argv) { continue; } if (fds[1].revents & (POLLIN | POLLERR)) { + if (before_first_command) { + // Drop any data left in the virtio-console from a previous reset. + ssize_t bytes = TEMP_FAILURE_RETRY(read(virtio_fd, buf, kBufferSize)); + if (bytes < 0) { + LOG(ERROR) << "virtio_fd ready, but read failed " << strerror(errno); + } else { + LOG(INFO) << "Discarding " << bytes << " bytes from virtio_fd."; + } + continue; + } // 'virtio-console to vhci' depends on H4Packetizer because vhci expects // full packet, but the data from virtio-console could be partial. h4.OnDataReady(virtio_fd); |