changeset 5119:7144aff70f33 HEAD

When running dump-capability, don't do stderr_close_shutdown since it could break and make epoll_ctl() return with EPERM.
author Timo Sirainen <tss@iki.fi>
date Mon, 12 Feb 2007 20:14:13 +0200
parents c2af4ee1f25e
children e4acabdc0de0
files src/master/mail-process.c
diffstat 1 files changed, 9 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/master/mail-process.c	Mon Feb 12 19:27:25 2007 +0200
+++ b/src/master/mail-process.c	Mon Feb 12 20:14:13 2007 +0200
@@ -192,7 +192,8 @@
 
 static void
 mail_process_set_environment(struct settings *set, const char *mail,
-			     const struct var_expand_table *var_expand_table)
+			     const struct var_expand_table *var_expand_table,
+			     bool dump_capability)
 {
 	const char *const *envs;
 	string_t *str;
@@ -257,7 +258,9 @@
 		env_put("MBOX_VERY_DIRTY_SYNCS=1");
 	if (set->mbox_lazy_writes)
 		env_put("MBOX_LAZY_WRITES=1");
-	if (set->shutdown_clients)
+	/* when running dump-capability log still points to stderr,
+	   and io_add()ing it might break (epoll_ctl() gives EPERM) */
+	if (set->shutdown_clients && !dump_capability)
 		env_put("STDERR_CLOSE_SHUTDOWN=1");
 	(void)umask(set->umask);
 
@@ -346,7 +349,8 @@
 				     getenv("TCPREMOTEIP"),
 				     getpid(), geteuid());
 
-	mail_process_set_environment(set, getenv("MAIL"), var_expand_table);
+	mail_process_set_environment(set, getenv("MAIL"), var_expand_table,
+				     FALSE);
         client_process_exec(executable, "");
 
 	i_fatal_status(FATAL_EXEC, "execv(%s) failed: %m", executable);
@@ -605,7 +609,8 @@
 			i_fatal("chdir(/tmp) failed: %m");
 	}
 
-        mail_process_set_environment(set, mail, var_expand_table);
+	mail_process_set_environment(set, mail, var_expand_table,
+				     dump_capability);
 
 	/* extra args. uppercase key value. */
 	args = array_get(&extra_args, &count);