Mercurial > dovecot > original-hg > dovecot-1.2
changeset 9055:249554df412f HEAD
expire-tool: Clear only user-specific environment variables when changing users.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 17 May 2009 21:04:26 -0400 |
parents | 89de2b91a655 |
children | 27a49c619a33 |
files | src/plugins/expire/expire-tool.c |
diffstat | 1 files changed, 6 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/plugins/expire/expire-tool.c Sun May 17 21:03:39 2009 -0400 +++ b/src/plugins/expire/expire-tool.c Sun May 17 21:04:26 2009 -0400 @@ -36,12 +36,13 @@ uid_t global_mail_uid; gid_t global_mail_gid; +static struct env_backup *env_backup; static int user_init(struct expire_context *ctx, const char *user) { int ret; - env_clean(); + env_backup_restore(env_backup); if ((ret = auth_client_put_user_env(ctx->auth_conn, user)) <= 0) { if (ret < 0) return ret; @@ -254,6 +255,8 @@ if (dict == NULL) i_fatal("dict_init() failed"); + env_backup = env_backup_save(); + trans = dict_transaction_begin(dict); iter = dict_iterate_init(dict, DICT_EXPIRE_PREFIX, DICT_ITERATE_FLAG_RECURSE | @@ -327,6 +330,8 @@ } } } + env_backup_free(&env_backup); + dict_iterate_deinit(&iter); if (!testrun) dict_transaction_commit(&trans);