diff options
author | Hans de Goede <hdegoede@redhat.com> | 2011-04-01 10:16:29 +0200 |
---|---|---|
committer | Hans de Goede <hdegoede@redhat.com> | 2011-04-01 11:13:50 +0200 |
commit | 7cc85f33be36eee3351618e53f9ba9fbc5ce7472 (patch) | |
tree | f61ceb18bc4369c2b0b812003da2274f87a634a6 /server | |
parent | ef6886732e332042242a09c2787dd4a8ddcbfea3 (diff) | |
download | spice-7cc85f33be36eee3351618e53f9ba9fbc5ce7472.tar.gz spice-7cc85f33be36eee3351618e53f9ba9fbc5ce7472.tar.xz spice-7cc85f33be36eee3351618e53f9ba9fbc5ce7472.zip |
server: Don't stop writing agent data to the guest when the client disconnects
write_to_vdi_port() was checking for reds->agent_state.connected to determine
wether it could write queued data. But agent_state.connected reflects if
*both* ends are connected. If the client has disconnected, but the guest agent
is still connected and some data is still pending (like a final clipboard
release from the client), then this data should be written to the guest agent.
Diffstat (limited to 'server')
-rw-r--r-- | server/reds.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/server/reds.c b/server/reds.c index 1521bc52..b286809e 100644 --- a/server/reds.c +++ b/server/reds.c @@ -1170,12 +1170,12 @@ static int write_to_vdi_port() int total = 0; int n; - if (!reds->agent_state.connected || reds->mig_target) { + if (!vdagent || reds->mig_target) { return 0; } sif = SPICE_CONTAINEROF(vdagent->base.sif, SpiceCharDeviceInterface, base); - while (reds->agent_state.connected) { + while (vdagent) { if (!(ring_item = ring_get_tail(&state->write_queue))) { break; } |