All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] io: Always remove an old channel watch before adding a new one.
@ 2017-07-24 18:15 Brandon Carpenter
  2017-07-24 18:42 ` [Qemu-devel] [PATCH] io: Improve websocket support by becoming more RFC compliant Brandon Carpenter
                   ` (2 more replies)
  0 siblings, 3 replies; 29+ messages in thread
From: Brandon Carpenter @ 2017-07-24 18:15 UTC (permalink / raw)
  To: qemu-devel; +Cc: kraxel, Brandon Carpenter

Also set saved handle to zero when removing without adding a new watch.

Signed-off-by: Brandon Carpenter <brandon.carpenter@cypherpath.com>
---
 ui/vnc-auth-vencrypt.c | 3 +++
 ui/vnc-ws.c            | 6 ++++++
 ui/vnc.c               | 4 ++++
 3 files changed, 13 insertions(+)

diff --git a/ui/vnc-auth-vencrypt.c b/ui/vnc-auth-vencrypt.c
index ffaab57550..c3eece4fa7 100644
--- a/ui/vnc-auth-vencrypt.c
+++ b/ui/vnc-auth-vencrypt.c
@@ -77,6 +77,9 @@ static void vnc_tls_handshake_done(QIOTask *task,
         vnc_client_error(vs);
         error_free(err);
     } else {
+        if (vs->ioc_tag) {
+            g_source_remove(vs->ioc_tag);
+        }
         vs->ioc_tag = qio_channel_add_watch(
             vs->ioc, G_IO_IN | G_IO_OUT, vnc_client_io, vs, NULL);
         start_auth_vencrypt_subauth(vs);
diff --git a/ui/vnc-ws.c b/ui/vnc-ws.c
index f530cd5474..eaf309553c 100644
--- a/ui/vnc-ws.c
+++ b/ui/vnc-ws.c
@@ -36,6 +36,9 @@ static void vncws_tls_handshake_done(QIOTask *task,
         error_free(err);
     } else {
         VNC_DEBUG("TLS handshake complete, starting websocket handshake\n");
+        if (vs->ioc_tag) {
+            g_source_remove(vs->ioc_tag);
+        }
         vs->ioc_tag = qio_channel_add_watch(
             QIO_CHANNEL(vs->ioc), G_IO_IN, vncws_handshake_io, vs, NULL);
     }
@@ -97,6 +100,9 @@ static void vncws_handshake_done(QIOTask *task,
     } else {
         VNC_DEBUG("Websock handshake complete, starting VNC protocol\n");
         vnc_start_protocol(vs);
+        if (vs->ioc_tag) {
+            g_source_remove(vs->ioc_tag);
+        }
         vs->ioc_tag = qio_channel_add_watch(
             vs->ioc, G_IO_IN, vnc_client_io, vs, NULL);
     }
diff --git a/ui/vnc.c b/ui/vnc.c
index eb91559b6b..ec86d6ad97 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -1121,6 +1121,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;
@@ -2931,6 +2932,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) {
-- 
2.13.3


-- 


CONFIDENTIALITY NOTICE: This e-mail message, including any attachments, is 
for the sole use of the intended recipient(s) and may contain proprietary, 
confidential or privileged information or otherwise be protected by law. 
Any unauthorized review, use, disclosure or distribution is prohibited. If 
you are not the intended recipient, please notify the sender and destroy 
all copies and the original message.

^ permalink raw reply related	[flat|nested] 29+ messages in thread

end of thread, other threads:[~2017-09-12 15:29 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-07-24 18:15 [Qemu-devel] [PATCH] io: Always remove an old channel watch before adding a new one Brandon Carpenter
2017-07-24 18:42 ` [Qemu-devel] [PATCH] io: Improve websocket support by becoming more RFC compliant Brandon Carpenter
2017-07-25  8:38   ` Daniel P. Berrange
2017-07-25 15:59     ` Brandon Carpenter
2017-09-08 17:37   ` [Qemu-devel] [PATCH v2 0/6] Update websocket code to more fully support the RFC Brandon Carpenter
2017-09-08 18:01     ` Eric Blake
2017-09-08 18:11       ` Brandon Carpenter
2017-09-08 18:15         ` Eric Blake
2017-09-08 17:37   ` [Qemu-devel] [PATCH v2 1/6] io: Always remove an old channel watch before adding a new one Brandon Carpenter
2017-09-08 17:37   ` [Qemu-devel] [PATCH v2 2/6] io: Small updates in preparation for websocket changes Brandon Carpenter
2017-09-08 17:37   ` [Qemu-devel] [PATCH v2 3/6] io: Add support for fragmented websocket binary frames Brandon Carpenter
2017-09-08 17:37   ` [Qemu-devel] [PATCH v2 4/6] io: Allow empty websocket payload Brandon Carpenter
2017-09-08 17:38   ` [Qemu-devel] [PATCH v2 5/6] io: Ignore websocket PING and PONG frames Brandon Carpenter
2017-09-11  8:38     ` Daniel P. Berrange
2017-09-11  9:04       ` Daniel P. Berrange
2017-09-08 17:38   ` [Qemu-devel] [PATCH v2 6/6] io: Reply to ping frames Brandon Carpenter
2017-09-11  8:50     ` Daniel P. Berrange
2017-09-11 17:03       ` Brandon Carpenter
2017-09-11 17:10         ` Daniel P. Berrange
2017-09-11 19:04           ` Brandon Carpenter
2017-09-12  8:57             ` Daniel P. Berrange
2017-09-11 17:37     ` Daniel P. Berrange
2017-09-11 17:43       ` Brandon Carpenter
2017-09-12  9:01         ` Daniel P. Berrange
2017-09-12 15:29           ` Brandon Carpenter
2017-07-24 21:22 ` [Qemu-devel] [PATCH] io: Always remove an old channel watch before adding a new one Paolo Bonzini
2017-07-25  8:36 ` Daniel P. Berrange
2017-09-08 16:18   ` Brandon Carpenter
2017-09-08 16:22     ` Daniel P. Berrange

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.