summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2011-04-01 10:16:29 +0200
committerHans de Goede <hdegoede@redhat.com>2011-04-01 11:13:50 +0200
commit7cc85f33be36eee3351618e53f9ba9fbc5ce7472 (patch)
treef61ceb18bc4369c2b0b812003da2274f87a634a6 /server
parentef6886732e332042242a09c2787dd4a8ddcbfea3 (diff)
downloadspice-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.c4
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;
}