]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: %m variable didn't work with blocking passdbs
authorTimo Sirainen <tss@iki.fi>
Wed, 27 Aug 2008 07:13:58 +0000 (10:13 +0300)
committerTimo Sirainen <tss@iki.fi>
Wed, 27 Aug 2008 07:13:58 +0000 (10:13 +0300)
--HG--
branch : HEAD

src/auth/auth-request.c
src/auth/auth-request.h

index efa2b5fd6b62e37f4ea67bce68d5d80c3d390e29..5d41036c8dcfe4fba65f40b114d74c369f790b2f 100644 (file)
@@ -39,6 +39,7 @@ auth_request_new(struct auth *auth, const struct mech_module *mech,
 
        request->auth = auth;
        request->mech = mech;
+       request->mech_name = mech == NULL ? NULL : mech->mech_name;
        request->callback = callback;
        request->context = context;
        return request;
@@ -146,6 +147,8 @@ void auth_request_export(struct auth_request *request,
                auth_stream_reply_add(reply, "secured", "1");
        if (request->skip_password_check)
                auth_stream_reply_add(reply, "skip_password_check", "1");
+       if (request->mech_name != NULL)
+               auth_stream_reply_add(reply, "mech", request->mech_name);
 }
 
 bool auth_request_import(struct auth_request *request,
@@ -179,7 +182,9 @@ bool auth_request_import(struct auth_request *request,
        else if (strcmp(key, "skip_password_check") == 0) {
                i_assert(request->master_user !=  NULL);
                request->skip_password_check = TRUE;
-       } else
+       } else if (strcmp(key, "mech") == 0)
+               request->mech_name = p_strdup(request->pool, value);
+       else
                return FALSE;
 
        return TRUE;
@@ -1373,8 +1378,8 @@ auth_request_get_var_expand_table(const struct auth_request *auth_request,
                tab[9].value = auth_request->passdb == NULL ? "" :
                        dec2str(auth_request->passdb->id);
        }
-       tab[10].value = auth_request->mech == NULL ? "" :
-               auth_request->mech->mech_name;
+       tab[10].value = auth_request->mech_name == NULL ? "" :
+               auth_request->mech_name;
        tab[11].value = auth_request->secured ? "secured" : "";
        tab[12].value = dec2str(auth_request->local_port);
        tab[13].value = dec2str(auth_request->remote_port);
index 050a6db7c881ab2a76c20a8c6a479e340e728a4e..edf1170226ea005d56df6da42d79a6f267bd6272 100644 (file)
@@ -62,7 +62,7 @@ struct auth_request {
        unsigned int id;
        time_t last_access;
 
-       const char *service;
+       const char *service, *mech_name;
        struct ip_addr local_ip, remote_ip;
        unsigned int local_port, remote_port;