From: Victor Toso <me@xxxxxxxxxxxxxx> Who is trying to collect the credentials might need to know if a given failure is due bad user input of credentionals or if the user has cancel/closed the dialog (which is also consider failure prior this patch) Related: https://bugzilla.redhat.com/show_bug.cgi?id=1446161 Signed-off-by: Victor Toso <victortoso@xxxxxxxxxx> --- src/remote-viewer.c | 14 +++++++------- src/virt-viewer-auth.c | 2 +- src/virt-viewer-auth.h | 10 +++++----- src/virt-viewer-session-spice.c | 22 +++++++++++----------- src/virt-viewer-session-vnc.c | 10 +++++----- src/virt-viewer.c | 10 ++++++---- 6 files changed, 35 insertions(+), 33 deletions(-) diff --git a/src/remote-viewer.c b/src/remote-viewer.c index 2db76bc..ab563bb 100644 --- a/src/remote-viewer.c +++ b/src/remote-viewer.c @@ -737,7 +737,7 @@ authenticate_cb(RestProxy *proxy, G_GNUC_UNUSED RestProxyAuth *auth, gchar *username = NULL; gchar *password = NULL; VirtViewerWindow *window; - gboolean success = FALSE; + gint response; g_object_get(proxy, "username", &username, @@ -747,11 +747,11 @@ authenticate_cb(RestProxy *proxy, G_GNUC_UNUSED RestProxyAuth *auth, username = g_strdup(g_get_user_name()); window = virt_viewer_app_get_main_window(VIRT_VIEWER_APP(user_data)); - success = virt_viewer_auth_collect_credentials(virt_viewer_window_get_window(window), - "oVirt", - NULL, - &username, &password); - if (success) { + response = virt_viewer_auth_collect_credentials(virt_viewer_window_get_window(window), + "oVirt", + NULL, + &username, &password); + if (response == GTK_RESPONSE_OK) { g_object_set(G_OBJECT(proxy), "username", username, "password", password, @@ -764,7 +764,7 @@ authenticate_cb(RestProxy *proxy, G_GNUC_UNUSED RestProxyAuth *auth, g_free(username); g_free(password); - return success; + return (response == GTK_RESPONSE_OK); } static void diff --git a/src/virt-viewer-auth.c b/src/virt-viewer-auth.c index 67c770c..96cda8a 100644 --- a/src/virt-viewer-auth.c +++ b/src/virt-viewer-auth.c @@ -113,7 +113,7 @@ virt_viewer_auth_collect_credentials(GtkWindow *window, gtk_widget_destroy(GTK_WIDGET(dialog)); g_object_unref(G_OBJECT(creds)); - return response == GTK_RESPONSE_OK; + return response; } /* diff --git a/src/virt-viewer-auth.h b/src/virt-viewer-auth.h index 25463fc..ebe09e5 100644 --- a/src/virt-viewer-auth.h +++ b/src/virt-viewer-auth.h @@ -27,11 +27,11 @@ #include "virt-viewer-session.h" -gboolean virt_viewer_auth_collect_credentials(GtkWindow *window, - const char *type, - const char *address, - char **username, - char **password); +gint virt_viewer_auth_collect_credentials(GtkWindow *window, + const char *type, + const char *address, + char **username, + char **password); #endif /* diff --git a/src/virt-viewer-session-spice.c b/src/virt-viewer-session-spice.c index 5f326aa..a87d4cd 100644 --- a/src/virt-viewer-session-spice.c +++ b/src/virt-viewer-session-spice.c @@ -668,7 +668,7 @@ virt_viewer_session_spice_main_channel_event(SpiceChannel *channel, { VirtViewerSessionSpice *self = VIRT_VIEWER_SESSION_SPICE(session); gchar *password = NULL, *user = NULL; - gboolean ret; + gint response; static gboolean username_required = FALSE; g_return_if_fail(self != NULL); @@ -717,13 +717,13 @@ virt_viewer_session_spice_main_channel_event(SpiceChannel *channel, } g_object_get(self->priv->session, "host", &host, NULL); - ret = virt_viewer_auth_collect_credentials(self->priv->main_window, - "SPICE", - host, - username_required ? &user : NULL, - &password); + response = virt_viewer_auth_collect_credentials(self->priv->main_window, + "SPICE", + host, + username_required ? &user : NULL, + &password); g_free(host); - if (!ret) { + if (response != GTK_RESPONSE_OK) { g_signal_emit_by_name(session, "session-cancelled"); } else { gboolean openfd; @@ -750,10 +750,10 @@ virt_viewer_session_spice_main_channel_event(SpiceChannel *channel, SpiceURI *proxy = spice_session_get_proxy_uri(self->priv->session); g_warn_if_fail(proxy != NULL); - ret = virt_viewer_auth_collect_credentials(self->priv->main_window, - "proxy", spice_uri_get_hostname(proxy), - &user, &password); - if (!ret) { + response = virt_viewer_auth_collect_credentials(self->priv->main_window, + "proxy", spice_uri_get_hostname(proxy), + &user, &password); + if (response != GTK_RESPONSE_OK) { g_signal_emit_by_name(session, "session-cancelled"); } else { spice_uri_set_user(proxy, user); diff --git a/src/virt-viewer-session-vnc.c b/src/virt-viewer-session-vnc.c index 26fb405..5287460 100644 --- a/src/virt-viewer-session-vnc.c +++ b/src/virt-viewer-session-vnc.c @@ -307,12 +307,12 @@ virt_viewer_session_vnc_auth_credential(GtkWidget *src G_GNUC_UNUSED, } if (wantUsername || wantPassword) { - gboolean ret = virt_viewer_auth_collect_credentials(self->priv->main_window, - "VNC", NULL, - wantUsername ? &username : NULL, - wantPassword ? &password : NULL); + gint response = virt_viewer_auth_collect_credentials(self->priv->main_window, + "VNC", NULL, + wantUsername ? &username : NULL, + wantPassword ? &password : NULL); - if (!ret) { + if (response != GTK_RESPONSE_OK) { vnc_display_close(self->priv->vnc); g_signal_emit_by_name(self, "session-cancelled"); goto cleanup; diff --git a/src/virt-viewer.c b/src/virt-viewer.c index 5c321db..eef1103 100644 --- a/src/virt-viewer.c +++ b/src/virt-viewer.c @@ -988,14 +988,16 @@ virt_viewer_auth_libvirt_credentials(virConnectCredentialPtr cred, if (username || password) { VirtViewerWindow *vwin = virt_viewer_app_get_main_window(VIRT_VIEWER_APP(app)); GtkWindow *win = virt_viewer_window_get_window(vwin); + gint response; if (username && (*username == NULL || **username == '\0')) *username = g_strdup(g_get_user_name()); - priv->auth_cancelled = !virt_viewer_auth_collect_credentials(win, - "libvirt", - app->priv->uri, - username, password); + response = virt_viewer_auth_collect_credentials(win, + "libvirt", + app->priv->uri, + username, password); + priv->auth_cancelled = (response != GTK_RESPONSE_OK); if (priv->auth_cancelled) { ret = -1; goto cleanup; -- 2.13.0 _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list