From cc423a17bc288496d68c03987a203c6201ca456f Mon Sep 17 00:00:00 2001 From: Thomas Roessler Date: Wed, 13 Jun 2001 08:28:12 +0000 Subject: [PATCH] An updated version of the previous patch. From Brendan. --- imap/auth_sasl.c | 3 --- mutt_sasl.c | 40 +++++++++++++++++++++++----------------- mutt_sasl.h | 1 - pop_auth.c | 6 ------ 4 files changed, 23 insertions(+), 27 deletions(-) diff --git a/imap/auth_sasl.c b/imap/auth_sasl.c index 818d37db8..5c54f5dc7 100644 --- a/imap/auth_sasl.c +++ b/imap/auth_sasl.c @@ -38,9 +38,6 @@ imap_auth_res_t imap_auth_sasl (IMAP_DATA* idata, const char* method) unsigned int len, olen; unsigned char client_start; - if (mutt_sasl_start () != SASL_OK) - return IMAP_AUTH_FAILURE; - if (mutt_sasl_client_new (idata->conn, &saslconn) < 0) { dprint (1, (debugfile, diff --git a/mutt_sasl.c b/mutt_sasl.c index 91e190fff..f4ff9b688 100644 --- a/mutt_sasl.c +++ b/mutt_sasl.c @@ -34,6 +34,8 @@ static sasl_callback_t mutt_sasl_callbacks[5]; +static int mutt_sasl_start (void); + /* callbacks */ static int mutt_sasl_cb_log (void* context, int priority, const char* message); static int mutt_sasl_cb_authname (void* context, int id, const char** result, @@ -57,30 +59,31 @@ int mutt_sasl_start (void) sasl_callback_t* callback, callbacks[2]; int rc; - if (!sasl_init) { - /* set up default logging callback */ - callback = callbacks; + if (sasl_init) + return SASL_OK; - callback->id = SASL_CB_LOG; - callback->proc = mutt_sasl_cb_log; - callback->context = NULL; - callback++; + /* set up default logging callback */ + callback = callbacks; - callback->id = SASL_CB_LIST_END; - callback->proc = NULL; - callback->context = NULL; + callback->id = SASL_CB_LOG; + callback->proc = mutt_sasl_cb_log; + callback->context = NULL; + callback++; - rc = sasl_client_init (callbacks); + callback->id = SASL_CB_LIST_END; + callback->proc = NULL; + callback->context = NULL; - if (rc != SASL_OK) - { - dprint (1, (debugfile, "mutt_sasl_start: libsasl initialisation failed.\n")); - return SASL_FAIL; - } + rc = sasl_client_init (callbacks); - sasl_init = 1; + if (rc != SASL_OK) + { + dprint (1, (debugfile, "mutt_sasl_start: libsasl initialisation failed.\n")); + return SASL_FAIL; } + sasl_init = 1; + return SASL_OK; } @@ -94,6 +97,9 @@ int mutt_sasl_client_new (CONNECTION* conn, sasl_conn_t** saslconn) const char* service; int rc; + if (mutt_sasl_start () != SASL_OK) + return -1; + switch (conn->account.type) { case M_ACCT_TYPE_IMAP: diff --git a/mutt_sasl.h b/mutt_sasl.h index 1e236c0c5..2e7e47391 100644 --- a/mutt_sasl.h +++ b/mutt_sasl.h @@ -25,7 +25,6 @@ #include "mutt_socket.h" -int mutt_sasl_start (void); int mutt_sasl_client_new (CONNECTION*, sasl_conn_t**); sasl_callback_t* mutt_sasl_get_callbacks (ACCOUNT*); int mutt_sasl_interact (sasl_interact_t*); diff --git a/pop_auth.c b/pop_auth.c index 055307536..fa6240053 100644 --- a/pop_auth.c +++ b/pop_auth.c @@ -45,12 +45,6 @@ static pop_auth_res_t pop_auth_sasl (POP_DATA *pop_data) unsigned int len, olen; unsigned char client_start; - if (!pop_data->auth_list) - return POP_A_UNAVAIL; - - if (mutt_sasl_start () != SASL_OK) - return POP_A_FAILURE; - if (mutt_sasl_client_new (pop_data->conn, &saslconn) < 0) { dprint (1, (debugfile, "pop_auth_sasl: Error allocating SASL connection.\n")); -- 2.40.0