/* SASL login/authentication code */
+#if HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include "mutt.h"
#include "mutt_sasl.h"
#include "imap_private.h"
irc = IMAP_CMD_CONTINUE;
/* looping protocol */
- while (rc == SASL_CONTINUE)
+ while (rc == SASL_CONTINUE || olen > 0)
{
do
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;
mutt_socket_write (idata->conn, "*\r\n");
dprint (1, (debugfile, "imap_auth_sasl: sasl_client_step error %d\n",rc));
}
+
+ olen = 0;
}
while (irc != IMAP_CMD_OK)