|
|
48c875 |
From b22ebc15e9b2d08663e3105ca12c8cc5de3971ab Mon Sep 17 00:00:00 2001
|
|
|
48c875 |
From: Pavel Grunt <pgrunt@redhat.com>
|
|
|
48c875 |
Date: Fri, 7 Apr 2017 12:05:18 +0200
|
|
|
48c875 |
Subject: [PATCH virt-viewer 32/32] app: Allow to connect to channel using unix
|
|
|
48c875 |
socket
|
|
|
48c875 |
To: virt-tools-list@redhat.com
|
|
|
48c875 |
|
|
|
48c875 |
Only method for connecting to channel opened later was ssh, however
|
|
|
48c875 |
this method failes when unix socket is used:
|
|
|
48c875 |
|
|
|
48c875 |
<graphics type='spice'>
|
|
|
48c875 |
<listen type='socket' socket='/tmp/spice.sock'/>
|
|
|
48c875 |
</graphics>
|
|
|
48c875 |
|
|
|
48c875 |
Related: rhbz#1335832, rhbz#1411765
|
|
|
48c875 |
|
|
|
48c875 |
Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
|
|
|
48c875 |
(cherry picked from commit fe538a9296925c919d4b80698147e4a1b56ba7fd)
|
|
|
48c875 |
---
|
|
|
48c875 |
src/virt-viewer-app.c | 29 +++++++++++++++++++++++------
|
|
|
48c875 |
1 file changed, 23 insertions(+), 6 deletions(-)
|
|
|
48c875 |
|
|
|
48c875 |
diff --git a/src/virt-viewer-app.c b/src/virt-viewer-app.c
|
|
|
48c875 |
index 2e7e193..2b74a9f 100644
|
|
|
48c875 |
--- a/src/virt-viewer-app.c
|
|
|
48c875 |
+++ b/src/virt-viewer-app.c
|
|
|
48c875 |
@@ -1129,6 +1129,7 @@ virt_viewer_app_channel_open(VirtViewerSession *session,
|
|
|
48c875 |
{
|
|
|
48c875 |
VirtViewerAppPrivate *priv;
|
|
|
48c875 |
int fd = -1;
|
|
|
48c875 |
+ gchar *error_message = NULL;
|
|
|
48c875 |
|
|
|
48c875 |
g_return_if_fail(self != NULL);
|
|
|
48c875 |
|
|
|
48c875 |
@@ -1141,14 +1142,30 @@ virt_viewer_app_channel_open(VirtViewerSession *session,
|
|
|
48c875 |
if (priv->transport && g_ascii_strcasecmp(priv->transport, "ssh") == 0 &&
|
|
|
48c875 |
!priv->direct && fd == -1) {
|
|
|
48c875 |
if ((fd = virt_viewer_app_open_tunnel_ssh(priv->host, priv->port, priv->user,
|
|
|
48c875 |
- priv->ghost, priv->gport, NULL)) < 0)
|
|
|
48c875 |
- virt_viewer_app_simple_message_dialog(self, _("Connect to ssh failed."));
|
|
|
48c875 |
- } else if (fd == -1) {
|
|
|
48c875 |
- virt_viewer_app_simple_message_dialog(self, _("Can't connect to channel, SSH only supported."));
|
|
|
48c875 |
+ priv->ghost, priv->gport, priv->unixsock)) < 0) {
|
|
|
48c875 |
+ error_message = g_strdup(_("Connect to ssh failed."));
|
|
|
48c875 |
+ g_debug("channel open ssh tunnel: %s", error_message);
|
|
|
48c875 |
+ }
|
|
|
48c875 |
+ }
|
|
|
48c875 |
+ if (fd < 0 && priv->unixsock) {
|
|
|
48c875 |
+ GError *error = NULL;
|
|
|
48c875 |
+ if ((fd = virt_viewer_app_open_unix_sock(priv->unixsock, &error)) < 0) {
|
|
|
48c875 |
+ g_free(error_message);
|
|
|
48c875 |
+ error_message = g_strdup(error->message);
|
|
|
48c875 |
+ g_debug("channel open unix socket: %s", error_message);
|
|
|
48c875 |
+ }
|
|
|
48c875 |
+ g_clear_error(&error);
|
|
|
48c875 |
+ }
|
|
|
48c875 |
+
|
|
|
48c875 |
+ if (fd < 0) {
|
|
|
48c875 |
+ virt_viewer_app_simple_message_dialog(self, _("Can't connect to channel: %s"),
|
|
|
48c875 |
+ (error_message != NULL) ? error_message :
|
|
|
48c875 |
+ _("only SSH or unix socket connection supported."));
|
|
|
48c875 |
+ g_free(error_message);
|
|
|
48c875 |
+ return;
|
|
|
48c875 |
}
|
|
|
48c875 |
|
|
|
48c875 |
- if (fd >= 0)
|
|
|
48c875 |
- virt_viewer_session_channel_open_fd(session, channel, fd);
|
|
|
48c875 |
+ virt_viewer_session_channel_open_fd(session, channel, fd);
|
|
|
48c875 |
}
|
|
|
48c875 |
#else
|
|
|
48c875 |
static void
|
|
|
48c875 |
--
|
|
|
48c875 |
2.12.2
|
|
|
48c875 |
|