Browse Source

vnc: set name for all I/O channels created

Ensure that all I/O channels created for VNC are given names
to distinguish their respective roles.

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Daniel P. Berrange 9 years ago
parent
commit
10bcfe5897
3 changed files with 11 additions and 0 deletions
  1. 1 0
      ui/vnc-auth-vencrypt.c
  2. 3 0
      ui/vnc-ws.c
  3. 7 0
      ui/vnc.c

+ 1 - 0
ui/vnc-auth-vencrypt.c

@@ -116,6 +116,7 @@ static int protocol_client_vencrypt_auth(VncState *vs, uint8_t *data, size_t len
             return 0;
             return 0;
         }
         }
 
 
+        qio_channel_set_name(QIO_CHANNEL(tls), "vnc-server-tls");
         VNC_DEBUG("Start TLS VeNCrypt handshake process\n");
         VNC_DEBUG("Start TLS VeNCrypt handshake process\n");
         object_unref(OBJECT(vs->ioc));
         object_unref(OBJECT(vs->ioc));
         vs->ioc = QIO_CHANNEL(tls);
         vs->ioc = QIO_CHANNEL(tls);

+ 3 - 0
ui/vnc-ws.c

@@ -67,6 +67,8 @@ gboolean vncws_tls_handshake_io(QIOChannel *ioc G_GNUC_UNUSED,
         return TRUE;
         return TRUE;
     }
     }
 
 
+    qio_channel_set_name(QIO_CHANNEL(tls), "vnc-ws-server-tls");
+
     VNC_DEBUG("Start TLS WS handshake process\n");
     VNC_DEBUG("Start TLS WS handshake process\n");
     object_unref(OBJECT(vs->ioc));
     object_unref(OBJECT(vs->ioc));
     vs->ioc = QIO_CHANNEL(tls);
     vs->ioc = QIO_CHANNEL(tls);
@@ -113,6 +115,7 @@ gboolean vncws_handshake_io(QIOChannel *ioc G_GNUC_UNUSED,
     }
     }
 
 
     wioc = qio_channel_websock_new_server(vs->ioc);
     wioc = qio_channel_websock_new_server(vs->ioc);
+    qio_channel_set_name(QIO_CHANNEL(wioc), "vnc-ws-server-websock");
 
 
     object_unref(OBJECT(vs->ioc));
     object_unref(OBJECT(vs->ioc));
     vs->ioc = QIO_CHANNEL(wioc);
     vs->ioc = QIO_CHANNEL(wioc);

+ 7 - 0
ui/vnc.c

@@ -3100,6 +3100,9 @@ static gboolean vnc_listen_io(QIOChannel *ioc,
 
 
     sioc = qio_channel_socket_accept(QIO_CHANNEL_SOCKET(ioc), &err);
     sioc = qio_channel_socket_accept(QIO_CHANNEL_SOCKET(ioc), &err);
     if (sioc != NULL) {
     if (sioc != NULL) {
+        qio_channel_set_name(QIO_CHANNEL(sioc),
+                             ioc != QIO_CHANNEL(vd->lsock) ?
+                             "vnc-ws-server" : "vnc-server");
         qio_channel_set_delay(QIO_CHANNEL(sioc), false);
         qio_channel_set_delay(QIO_CHANNEL(sioc), false);
         vnc_connect(vd, sioc, false,
         vnc_connect(vd, sioc, false,
                     ioc != QIO_CHANNEL(vd->lsock));
                     ioc != QIO_CHANNEL(vd->lsock));
@@ -3788,6 +3791,7 @@ void vnc_display_open(const char *id, Error **errp)
         }
         }
         vd->is_unix = saddr->type == SOCKET_ADDRESS_KIND_UNIX;
         vd->is_unix = saddr->type == SOCKET_ADDRESS_KIND_UNIX;
         sioc = qio_channel_socket_new();
         sioc = qio_channel_socket_new();
+        qio_channel_set_name(QIO_CHANNEL(sioc), "vnc-reverse");
         if (qio_channel_socket_connect_sync(sioc, saddr, errp) < 0) {
         if (qio_channel_socket_connect_sync(sioc, saddr, errp) < 0) {
             goto fail;
             goto fail;
         }
         }
@@ -3795,6 +3799,7 @@ void vnc_display_open(const char *id, Error **errp)
         object_unref(OBJECT(sioc));
         object_unref(OBJECT(sioc));
     } else {
     } else {
         vd->lsock = qio_channel_socket_new();
         vd->lsock = qio_channel_socket_new();
+        qio_channel_set_name(QIO_CHANNEL(vd->lsock), "vnc-listen");
         if (qio_channel_socket_listen_sync(vd->lsock, saddr, errp) < 0) {
         if (qio_channel_socket_listen_sync(vd->lsock, saddr, errp) < 0) {
             goto fail;
             goto fail;
         }
         }
@@ -3802,6 +3807,7 @@ void vnc_display_open(const char *id, Error **errp)
 
 
         if (ws_enabled) {
         if (ws_enabled) {
             vd->lwebsock = qio_channel_socket_new();
             vd->lwebsock = qio_channel_socket_new();
+            qio_channel_set_name(QIO_CHANNEL(vd->lwebsock), "vnc-ws-listen");
             if (qio_channel_socket_listen_sync(vd->lwebsock,
             if (qio_channel_socket_listen_sync(vd->lwebsock,
                                                wsaddr, errp) < 0) {
                                                wsaddr, errp) < 0) {
                 object_unref(OBJECT(vd->lsock));
                 object_unref(OBJECT(vd->lsock));
@@ -3845,6 +3851,7 @@ void vnc_display_add_client(const char *id, int csock, bool skipauth)
 
 
     sioc = qio_channel_socket_new_fd(csock, NULL);
     sioc = qio_channel_socket_new_fd(csock, NULL);
     if (sioc) {
     if (sioc) {
+        qio_channel_set_name(QIO_CHANNEL(sioc), "vnc-server");
         vnc_connect(vd, sioc, skipauth, false);
         vnc_connect(vd, sioc, skipauth, false);
         object_unref(OBJECT(sioc));
         object_unref(OBJECT(sioc));
     }
     }