[virt-tools-list] [virt-viewer PATCH] Prefer virDomainOpenGraphicsFD for --attach

Ján Tomko jtomko at redhat.com
Fri Sep 12 13:03:35 UTC 2014


The virDomainOpenGraphics API cannot label the socket
we pass to it. Prefer virDomainOpenGraphicsFD (introduced
in libvirt 1.2.8) which creates the socket for us
and works with SELinux too.

Signed-off-by: Ján Tomko <jtomko at redhat.com>
---
 src/virt-viewer.c | 19 ++++---------------
 1 file changed, 4 insertions(+), 15 deletions(-)

diff --git a/src/virt-viewer.c b/src/virt-viewer.c
index f8a9ab5..67e6055 100644
--- a/src/virt-viewer.c
+++ b/src/virt-viewer.c
@@ -423,30 +423,19 @@ virt_viewer_update_display(VirtViewer *self, virDomainPtr dom)
 static gboolean
 virt_viewer_open_connection(VirtViewerApp *self G_GNUC_UNUSED, int *fd)
 {
-#if defined(HAVE_SOCKETPAIR)
     VirtViewer *viewer = VIRT_VIEWER(self);
     VirtViewerPrivate *priv = viewer->priv;
-    int pair[2];
-#endif
+
     *fd = -1;
-#if defined(HAVE_SOCKETPAIR)
+
     if (!priv->dom)
         return TRUE;
 
-    if (socketpair(PF_UNIX, SOCK_STREAM, 0, pair) < 0)
-        return FALSE;
-
-    if (virDomainOpenGraphics(priv->dom, 0, pair[0],
-                              VIR_DOMAIN_OPEN_GRAPHICS_SKIPAUTH) < 0) {
+    if ((*fd = virDomainOpenGraphicsFD(priv->dom, 0,
+                                       VIR_DOMAIN_OPEN_GRAPHICS_SKIPAUTH)) < 0) {
         virErrorPtr err = virGetLastError();
         g_debug("Error %s", err && err->message ? err->message : "Unknown");
-        close(pair[0]);
-        close(pair[1]);
-        return TRUE;
     }
-    close(pair[0]);
-    *fd = pair[1];
-#endif
     return TRUE;
 }
 
-- 
1.8.5.5




More information about the virt-tools-list mailing list