Mercurial > dovecot > core-2.2
changeset 20632:6c40ae42ba14
auth-db-dict: Allow key name expansion
This allows expansion of dictionary keys based on userdb
variables on dict lookup mapping. Example:
key userdb {
key = %{userdb:nspace:default}/userdb
format = json
}
author | Aki Tuomi <aki.tuomi@dovecot.fi> |
---|---|
date | Wed, 13 Jul 2016 09:51:08 +0300 |
parents | c085a469d8d6 |
children | d54651ba988a |
files | src/auth/db-dict.c |
diffstat | 1 files changed, 8 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/auth/db-dict.c Tue Aug 09 11:48:10 2016 +0300 +++ b/src/auth/db-dict.c Wed Jul 13 09:51:08 2016 +0300 @@ -457,7 +457,14 @@ p_array_init(&iter->keys, pool, array_count(&conn->set.keys)); array_foreach(&conn->set.keys, key) { iterkey = array_append_space(&iter->keys); - iterkey->key = key; + struct db_dict_key *new_key = p_new(iter->pool, struct db_dict_key, 1); + memcpy(new_key, key, sizeof(struct db_dict_key)); + string_t *expanded_key = str_new(iter->pool, strlen(key->key)); + auth_request_var_expand_with_table(expanded_key, key->key, auth_request, + iter->var_expand_table, + NULL); + new_key->key = str_c(expanded_key); + iterkey->key = new_key; } T_BEGIN { db_dict_iter_find_used_keys(iter);