summary refs log tree commit diff stats
path: root/ui/vnc.c
diff options
context:
space:
mode:
authorBrandon Carpenter <brandon.carpenter@cypherpath.com>2017-09-12 08:21:47 -0700
committerDaniel P. Berrange <berrange@redhat.com>2017-10-04 13:21:53 +0100
commita75d6f07613af7ec5b016b31b117436e32ce7a5f (patch)
tree60e063eefa48a8535b57fac8d4ff39f5e4e7327f /ui/vnc.c
parent33badfd1e3735b877e41939100511c65572be6b9 (diff)
downloadfocaccia-qemu-a75d6f07613af7ec5b016b31b117436e32ce7a5f.tar.gz
focaccia-qemu-a75d6f07613af7ec5b016b31b117436e32ce7a5f.zip
ui: Always remove an old VNC channel watch before adding a new one
Also set saved handle to zero when removing without adding a new watch.

Signed-off-by: Brandon Carpenter <brandon.carpenter@cypherpath.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Daniel P. Berrange <berrange@redhat.com>
Diffstat (limited to 'ui/vnc.c')
-rw-r--r--ui/vnc.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/ui/vnc.c b/ui/vnc.c
index af810f0547..9f8d5a1b1f 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -1122,6 +1122,7 @@ static void vnc_disconnect_start(VncState *vs)
     vnc_set_share_mode(vs, VNC_SHARE_MODE_DISCONNECTED);
     if (vs->ioc_tag) {
         g_source_remove(vs->ioc_tag);
+        vs->ioc_tag = 0;
     }
     qio_channel_close(vs->ioc, NULL);
     vs->disconnecting = TRUE;
@@ -2934,6 +2935,9 @@ static void vnc_connect(VncDisplay *vd, QIOChannelSocket *sioc,
     VNC_DEBUG("New client on socket %p\n", vs->sioc);
     update_displaychangelistener(&vd->dcl, VNC_REFRESH_INTERVAL_BASE);
     qio_channel_set_blocking(vs->ioc, false, NULL);
+    if (vs->ioc_tag) {
+        g_source_remove(vs->ioc_tag);
+    }
     if (websocket) {
         vs->websocket = 1;
         if (vd->tlscreds) {