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

Reply via email to