commit 2f91e22371fb2b7054e1576f6f85bde429cefec5
Author: Oswald Buddenhagen <[email protected]>
Date: Sat Dec 3 20:58:16 2016 +0100
fix LOGIN in SASL builds
if AuthMechs includes more than just LOGIN and the server announces any
AUTH= mechanism, we try SASL. but that can still fail to find any
suitable authentication mechanism, and we must not error out in that
case if we are supposed to fall back to LOGIN.
src/drv_imap.c | 6 ++++++
1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/src/drv_imap.c b/src/drv_imap.c
index 4bc2fcc..5d77f08 100644
--- a/src/drv_imap.c
+++ b/src/drv_imap.c
@@ -1992,6 +1992,8 @@ imap_open_store_authenticate2( imap_store_t *ctx )
rc = sasl_client_new( "imap", srvc->sconf.host, NULL, NULL,
NULL, 0, &ctx->sasl );
if (rc != SASL_OK) {
+ if (rc == SASL_NOMECH)
+ goto notsasl;
if (!ctx->sasl)
goto saslbail;
error( "Error: %s\n", sasl_errdetail( ctx->sasl ) );
@@ -1999,6 +2001,8 @@ imap_open_store_authenticate2( imap_store_t *ctx )
}
rc = sasl_client_start( ctx->sasl, saslmechs + 1, &interact,
CAP(SASLIR) ? &out : NULL, &out_len, &gotmech );
+ if (rc == SASL_NOMECH)
+ goto notsasl;
if (gotmech)
info( "Authenticating with SASL mechanism %s...\n",
gotmech );
/* Technically, we are supposed to loop over
sasl_client_start(),
@@ -2017,6 +2021,8 @@ imap_open_store_authenticate2( imap_store_t *ctx )
imap_exec( ctx, cmd, done_sasl_auth, enc ? "AUTHENTICATE %s %s"
: "AUTHENTICATE %s", gotmech, enc );
free( enc );
return;
+ notsasl:
+ sasl_dispose( &ctx->sasl );
}
#endif
if (auth_login) {
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
isync-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/isync-devel