[virt-tools-list] [PATCH 1/2] Return full response from virt_viewer_auth_collect_credentials()

Victor Toso victortoso at redhat.com
Fri Jun 2 10:40:35 UTC 2017


From: Victor Toso <me at victortoso.com>

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 at redhat.com>
---
 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




More information about the virt-tools-list mailing list