]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
login: Save final SASL reply to client struct.
authorTimo Sirainen <tss@iki.fi>
Wed, 23 Nov 2011 23:45:09 +0000 (01:45 +0200)
committerTimo Sirainen <tss@iki.fi>
Wed, 23 Nov 2011 23:45:09 +0000 (01:45 +0200)
src/login-common/client-common.h
src/login-common/sasl-server.c

index 15fed28b2b0f346dad3288bc9037c7a29f591915..2bda637bd47acf6a50fb5a9c1b98767647b91166 100644 (file)
@@ -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;
index a021b3abfb368ad530691220cd18d42cd9d6ea4f..ae659f4a1ef78898b945ea8e87e77762f227d1ad 100644 (file)
@@ -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);
                        }
                }