commit 2f91e22371fb2b7054e1576f6f85bde429cefec5 Author: Oswald Buddenhagen <o...@users.sf.net> 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 isync-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/isync-devel