mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2024-11-25 05:03:05 +00:00
wl: send HUP event when VFDs are hungup
It is essential that paste operations on the guest receive a hangup letting them know that there is no more data to read. This change fixes that behavior, which was broken by thew new PollContext based logic, which separates out the readable and hungup code paths. TEST=finished wayland pastes receive EOF BUG=chromium:835112 Change-Id: I764124ab2eabb32d8cc25a3a4c0dfbe49b26e799 Reviewed-on: https://chromium-review.googlesource.com/1031292 Commit-Ready: Zach Reizner <zachr@chromium.org> Tested-by: David Reveman <reveman@chromium.org> Reviewed-by: David Reveman <reveman@chromium.org> Reviewed-by: Stephen Barber <smbarber@chromium.org> Reviewed-by: Dylan Reid <dgreid@chromium.org>
This commit is contained in:
parent
dafdbc01cb
commit
71aedde5af
1 changed files with 8 additions and 1 deletions
|
@ -838,9 +838,16 @@ impl WlState {
|
|||
|
||||
for event in events.as_ref().iter_hungup() {
|
||||
if !event.readable() {
|
||||
if let Err(e) = self.close(event.token()) {
|
||||
let vfd_id = event.token();
|
||||
if let Err(e) = self.close(vfd_id) {
|
||||
warn!("failed to close vfd: {:?}", e)
|
||||
}
|
||||
// Once the vfd has been hungup and there is nothing left to read, it's time to send
|
||||
// the HUP event over virtio. It's very important that this in_queue entry gets
|
||||
// pushed /after/ we self.close the vfd_id because part of the close operation for a
|
||||
// vfd is removing all pending in_queue entries related to the vfd, regardless of
|
||||
// type.
|
||||
self.in_queue.push_back((vfd_id, WlRecv::Hup));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue