Mercurial > dovecot > original-hg > dovecot-2.1
changeset 14941:cd919c490ea6
auth: Allow using userdb_userdb_import in passdb query to set multiple userdb fields.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 31 Mar 2013 17:40:12 +0300 |
parents | 9d79ef9cf337 |
children | 963c6f616aa4 |
files | src/auth/auth-request.c |
diffstat | 1 files changed, 21 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/auth/auth-request.c Sun Mar 31 11:23:42 2013 +0300 +++ b/src/auth/auth-request.c Sun Mar 31 17:40:12 2013 +0300 @@ -1242,6 +1242,22 @@ return TRUE; } +static void +auth_request_userdb_userdb_import(struct auth_request *request, + const char *args, const char *default_scheme) +{ + const char *key, *value, *const *arg = t_strsplit(args, "\t"); + + for (; *arg != NULL; arg++) { + value = strchr(*arg, '='); + if (value == NULL) + key = *arg; + else + key = t_strdup_until(*arg, value++); + auth_request_set_field(request, key, value, default_scheme); + } +} + void auth_request_set_field(struct auth_request *request, const char *name, const char *value, const char *default_scheme) @@ -1287,6 +1303,11 @@ auth_request_validate_networks(request, value); } else if (strncmp(name, "userdb_", 7) == 0) { /* for prefetch userdb */ + if (strcmp(name, "userdb_userdb_import") == 0) { + auth_request_userdb_userdb_import(request, value, + default_scheme); + return; + } if (request->userdb_reply == NULL) auth_request_init_userdb_reply(request); auth_request_set_userdb_field(request, name + 7, value);