GDBus: If an authentication method fail, don't give up, just try the next one
authorDavid Zeuthen <davidz@redhat.com>
Wed, 13 Apr 2011 22:40:47 +0000 (18:40 -0400)
committerDavid Zeuthen <davidz@redhat.com>
Wed, 13 Apr 2011 22:40:47 +0000 (18:40 -0400)
This problem was reported in bug 647602.

https://bugzilla.gnome.org/show_bug.cgi?id=647602

Signed-off-by: David Zeuthen <davidz@redhat.com>
gio/gdbusauth.c

index f190469..29e229a 100644 (file)
@@ -663,7 +663,8 @@ _g_dbus_auth_run_client (GDBusAuth     *auth,
           if (line == NULL)
             goto out;
           debug_print ("CLIENT: WaitingForReject, read '%s'", line);
-        foobar:
+
+        choose_mechanism:
           if (!g_str_has_prefix (line, "REJECTED "))
             {
               g_set_error (error,
@@ -739,7 +740,7 @@ _g_dbus_auth_run_client (GDBusAuth     *auth,
             }
           else if (g_str_has_prefix (line, "REJECTED "))
             {
-              goto foobar;
+              goto choose_mechanism;
             }
           else
             {
@@ -841,6 +842,13 @@ _g_dbus_auth_run_client (GDBusAuth     *auth,
                 }
               state = CLIENT_STATE_WAITING_FOR_OK;
             }
+          else if (g_str_has_prefix (line, "REJECTED "))
+            {
+              /* could be the chosen authentication method just doesn't work. Try
+               * another one...
+               */
+              goto choose_mechanism;
+            }
           else
             {
               g_set_error (error,