From: Timo Sirainen Date: Wed, 23 Nov 2011 23:45:09 +0000 (+0200) Subject: login: Save final SASL reply to client struct. X-Git-Tag: 2.1.rc1~10 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=aebfda1f6e3a924c31e8f54237b81fabf4b2264c;p=thirdparty%2Fdovecot%2Fcore.git login: Save final SASL reply to client struct. --- diff --git a/src/login-common/client-common.h b/src/login-common/client-common.h index 15fed28b2b..2bda637bd4 100644 --- a/src/login-common/client-common.h +++ b/src/login-common/client-common.h @@ -101,6 +101,7 @@ struct client { struct auth_client_request *auth_request; string_t *auth_response; time_t auth_first_started; + const char *sasl_final_resp; unsigned int master_auth_id; unsigned int master_tag; diff --git a/src/login-common/sasl-server.c b/src/login-common/sasl-server.c index a021b3abfb..ae659f4a1e 100644 --- a/src/login-common/sasl-server.c +++ b/src/login-common/sasl-server.c @@ -232,11 +232,14 @@ authenticate_callback(struct auth_client_request *request, if (strncmp(args[i], "user=", 5) == 0) { i_free(client->virtual_user); client->virtual_user = i_strdup(args[i] + 5); - } - if (strcmp(args[i], "nologin") == 0 || - strcmp(args[i], "proxy") == 0) { + } else if (strcmp(args[i], "nologin") == 0 || + strcmp(args[i], "proxy") == 0) { /* user can't login */ nologin = TRUE; + } else if (strncmp(args[i], "resp=", 5) == 0 && + login_binary->sasl_support_final_reply) { + client->sasl_final_resp = + p_strdup(client->pool, args[i] + 5); } }