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);