summaryrefslogtreecommitdiffstats
path: root/server/reds.c
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-04 11:23:05 +0200
commitc652dfa5e635342672a66b9f4c7cbbfb1820341c (patch)
tree37e9d688971f5f1538d71b959760e79504545a8e /server/reds.c
parentf8e6dc78c7e71a3744be380350a55ad98f75def7 (diff)
downloadspice-c652dfa5e635342672a66b9f4c7cbbfb1820341c.tar.gz
spice-c652dfa5e635342672a66b9f4c7cbbfb1820341c.tar.xz
spice-c652dfa5e635342672a66b9f4c7cbbfb1820341c.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/reds.c')
-rw-r--r--server/reds.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/server/reds.c b/server/reds.c
index 705316bb..ba159be7 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -765,12 +765,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;
}