summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@redhat.com>2011-07-21 16:22:30 +0200
committerDaniel P. Berrange <berrange@redhat.com>2011-07-22 16:09:14 +0100
commita1f0b01afc960e152b142fdb41b7a7f9032d5bfa (patch)
tree95d3a96254b6c561382517fc928426b78f551b78 /src
parente56a8cb203884554ab3e4d67cb8f49d53a749c82 (diff)
downloadvirt-viewer-a1f0b01afc960e152b142fdb41b7a7f9032d5bfa.tar.gz
virt-viewer-a1f0b01afc960e152b142fdb41b7a7f9032d5bfa.tar.xz
virt-viewer-a1f0b01afc960e152b142fdb41b7a7f9032d5bfa.zip
Split virt_viewer_activate() and virt_viewer_set_domain()
Diffstat (limited to 'src')
-rw-r--r--src/virt-viewer.c32
1 files changed, 21 insertions, 11 deletions
diff --git a/src/virt-viewer.c b/src/virt-viewer.c
index 1859cda..8ea14cd 100644
--- a/src/virt-viewer.c
+++ b/src/virt-viewer.c
@@ -1214,20 +1214,15 @@ virt_viewer_channel_open(VirtViewerSession *session G_GNUC_UNUSED,
#endif
static int
-virt_viewer_activate(VirtViewer *viewer,
- virDomainPtr dom)
+virt_viewer_set_domain(VirtViewer *viewer,
+ virDomainPtr dom)
{
- int fd = -1;
- int ret = -1;
-
- if (viewer->active)
- goto cleanup;
-
virt_viewer_trace(viewer, "Guest %s is running, determining display\n",
viewer->domkey);
+
if (viewer->session == NULL) {
if (!virt_viewer_extract_connect_info(viewer, dom))
- goto cleanup;
+ return -1;
if (viewer->gport)
viewer->pretty_address = g_strdup_printf("%s:%s", viewer->ghost, viewer->gport);
@@ -1235,6 +1230,18 @@ virt_viewer_activate(VirtViewer *viewer,
viewer->pretty_address = g_strdup_printf("%s:%s", viewer->host, viewer->unixsock);
}
+ return 0;
+}
+
+static int
+virt_viewer_activate(VirtViewer *viewer)
+{
+ int fd = -1;
+ int ret = -1;
+
+ if (viewer->active)
+ goto cleanup;
+
#if defined(HAVE_SOCKETPAIR) && defined(HAVE_FORK)
if (viewer->transport &&
g_strcasecmp(viewer->transport, "ssh") == 0 &&
@@ -1464,7 +1471,8 @@ virt_viewer_domain_event(virConnectPtr conn G_GNUC_UNUSED,
break;
case VIR_DOMAIN_EVENT_STARTED:
- virt_viewer_activate(viewer, dom);
+ virt_viewer_set_domain(viewer, dom);
+ virt_viewer_activate(viewer);
break;
}
@@ -1507,7 +1515,9 @@ virt_viewer_initial_connect(VirtViewer *viewer)
if (info.state == VIR_DOMAIN_SHUTOFF) {
virt_viewer_set_status(viewer, "Waiting for guest domain to start");
} else {
- ret = virt_viewer_activate(viewer, dom);
+ ret = virt_viewer_set_domain(viewer, dom);
+ if (ret >= 0)
+ ret = virt_viewer_activate(viewer);
if (ret < 0) {
if (viewer->waitvm) {
virt_viewer_set_status(viewer, "Waiting for guest domain to start server");