summary refs log tree commit diff stats
path: root/ui/vnc.h
diff options
context:
space:
mode:
authorDaniel P. Berrange <berrange@redhat.com>2017-02-03 12:06:44 +0000
committerGerd Hoffmann <kraxel@redhat.com>2017-02-08 14:59:37 +0100
commit4ee74fa7082a1a521dc5f7a4b61a62b61d1480b2 (patch)
tree55c418c2561dfc0ab3d17a4986630338d824296e /ui/vnc.h
parent2a7e6857cd3178d705a49c4adde2f3af26ed3ae1 (diff)
downloadfocaccia-qemu-4ee74fa7082a1a521dc5f7a4b61a62b61d1480b2.tar.gz
focaccia-qemu-4ee74fa7082a1a521dc5f7a4b61a62b61d1480b2.zip
ui: refactor VncDisplay to allow multiple listening sockets
Currently there is only a single listener for plain VNC and
a single listener for websockets VNC. This means that if
getaddrinfo() returns multiple IP addresses, for a hostname,
the VNC server can only listen on one of them. This is
just bearable if listening on wildcard interface, or if
the host only has a single network interface to listen on,
but if there are multiple NICs and the VNC server needs
to listen on 2 or more specific IP addresses, it can't be
done.

This refactors the VncDisplay state so that it holds an
array of listening sockets, but still only listens on
one socket.

Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Message-id: 20170203120649.15637-4-berrange@redhat.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'ui/vnc.h')
-rw-r--r--ui/vnc.h10
1 files changed, 6 insertions, 4 deletions
diff --git a/ui/vnc.h b/ui/vnc.h
index d8c9de5a75..694cf32ca9 100644
--- a/ui/vnc.h
+++ b/ui/vnc.h
@@ -146,10 +146,12 @@ struct VncDisplay
     int num_exclusive;
     int connections_limit;
     VncSharePolicy share_policy;
-    QIOChannelSocket *lsock;
-    guint lsock_tag;
-    QIOChannelSocket *lwebsock;
-    guint lwebsock_tag;
+    size_t nlsock;
+    QIOChannelSocket **lsock;
+    guint *lsock_tag;
+    size_t nlwebsock;
+    QIOChannelSocket **lwebsock;
+    guint *lwebsock_tag;
     DisplaySurface *ds;
     DisplayChangeListener dcl;
     kbd_layout_t *kbd_layout;