When --direct fails the expected behavior is to report an error and close the dialog, instead of the current behavior, that shows a dialog and waits for the guest to connect. Related to: https://bugzilla.redhat.com/show_bug.cgi?id=1085216 --- src/virt-viewer.c | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/virt-viewer.c b/src/virt-viewer.c index e83898b..68dc148 100644 --- a/src/virt-viewer.c +++ b/src/virt-viewer.c @@ -474,8 +474,19 @@ virt_viewer_extract_connect_info(VirtViewer *self, if (!virt_viewer_is_reachable(ghost, transport, host, direct)) { g_debug("graphics listen '%s' is not reachable from this machine", ghost ? ghost : ""); - virt_viewer_app_simple_message_dialog(app, _("Guest '%s' is not reachable"), - priv->domkey); + if (!direct) { + /* + * The distinction made between virt-viewer launched with + * '--direct' consists in: + * 1) virt_viewer_is_reachable() fails: Reporting an error + * to the user and closing the application. + * 2) virt_viewer_is_reachable() doesn't fail: Informing + * the user through a simple dialog and letting virt-viewer + * wait for the guest is the expected behavior. + */ + virt_viewer_app_simple_message_dialog(app, _("Guest '%s' is not reachable"), + priv->domkey); + } goto cleanup; } @@ -757,8 +768,17 @@ virt_viewer_initial_connect(VirtViewerApp *app, GError **error) goto wait; } - if (!virt_viewer_update_display(self, dom)) + if (!virt_viewer_update_display(self, dom)) { + if (virt_viewer_app_get_direct(app)) { + gchar *msg = g_strdup_printf(_("Guest '%s' is not reachable"), priv->domkey); + g_set_error_literal(&err, VIRT_VIEWER_ERROR, VIRT_VIEWER_ERROR_FAILED, msg); + g_free(msg); + g_debug("%s", err->message); + goto cleanup; + } + goto wait; + } ret = VIRT_VIEWER_APP_CLASS(virt_viewer_parent_class)->initial_connect(app, &err); if (ret || err) -- 2.3.3 _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list