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,
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;
}
const char* service;
int rc;
+ if (mutt_sasl_start () != SASL_OK)
+ return -1;
+
switch (conn->account.type)
{
case M_ACCT_TYPE_IMAP:
#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*);
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"));