]> granicus.if.org Git - mutt/commitdiff
If a method list has been given, fall back to the next authenticator
authorBrendan Cully <brendan@kublai.com>
Tue, 21 Nov 2006 03:06:03 +0000 (03:06 +0000)
committerBrendan Cully <brendan@kublai.com>
Tue, 21 Nov 2006 03:06:03 +0000 (03:06 +0000)
whenever an attempt returns NO or BAD.

imap/auth_sasl.c

index 38a801a900201f0ea794ff6dc9528aa4b12bfe69..99ea3edef220ab6ca604f61313101b057b8ceb4a 100644 (file)
@@ -118,13 +118,6 @@ imap_auth_res_t imap_auth_sasl (IMAP_DATA* idata, const char* method)
       irc = imap_cmd_step (idata);
     while (irc == IMAP_CMD_CONTINUE);
 
-    if (method && irc == IMAP_CMD_NO)
-    {
-      dprint (2, (debugfile, "imap_auth_sasl: %s failed\n", method));
-      sasl_dispose (&saslconn);
-      return IMAP_AUTH_UNAVAIL;
-    }
-
     if (irc == IMAP_CMD_BAD || irc == IMAP_CMD_NO)
       goto bail;
 
@@ -200,9 +193,16 @@ imap_auth_res_t imap_auth_sasl (IMAP_DATA* idata, const char* method)
   }
 
  bail:
+  sasl_dispose (&saslconn);
+
+  if (method)
+  {
+    dprint (2, (debugfile, "imap_auth_sasl: %s failed\n", method));
+    return IMAP_AUTH_UNAVAIL;
+  }
+
   mutt_error _("SASL authentication failed.");
   mutt_sleep(2);
-  sasl_dispose (&saslconn);
 
   return IMAP_AUTH_FAILURE;
 }