dovecot-2.0: lib-master: When getting settings via doveconf, tel...

dovecot at dovecot.org dovecot at dovecot.org
Thu Mar 25 19:29:00 EET 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/2d7b7fb99693
changeset: 10984:2d7b7fb99693
user:      Timo Sirainen <tss at iki.fi>
date:      Thu Mar 25 19:25:45 2010 +0200
description:
lib-master: When getting settings via doveconf, tell it our module.

diffstat:

 src/lib-master/master-service-settings.c |  21 ++++++++++++---------
 1 files changed, 12 insertions(+), 9 deletions(-)

diffs (50 lines):

diff -r eecf62b49475 -r 2d7b7fb99693 src/lib-master/master-service-settings.c
--- a/src/lib-master/master-service-settings.c	Thu Mar 25 19:25:02 2010 +0200
+++ b/src/lib-master/master-service-settings.c	Thu Mar 25 19:25:45 2010 +0200
@@ -62,7 +62,8 @@
 };
 
 static void ATTR_NORETURN
-master_service_exec_config(struct master_service *service, bool preserve_home)
+master_service_exec_config(struct master_service *service,
+			   const struct master_service_settings_input *input)
 {
 	const char **conf_argv, *path, *const *paths, *binary_path;
 
@@ -85,18 +86,20 @@
 	}
 
 	if (!service->keep_environment)
-		master_service_env_clean(preserve_home);
+		master_service_env_clean(input->preserve_home);
 
 	/* @UNSAFE */
-	conf_argv = t_new(const char *, 6 + (service->argc + 1) + 1);
+	conf_argv = t_new(const char *, 8 + (service->argc + 1) + 1);
 	conf_argv[0] = DOVECOT_CONFIG_BIN_PATH;
 	conf_argv[1] = "-f";
 	conf_argv[2] = t_strconcat("service=", service->name, NULL);
-	conf_argv[3] = "-c";
-	conf_argv[4] = service->config_path;
-	conf_argv[5] = "-e";
-	conf_argv[6] = binary_path;
-	memcpy(conf_argv+7, service->argv + 1,
+	conf_argv[3] = "-m";
+	conf_argv[4] = input->module == NULL ? "" : input->module;
+	conf_argv[5] = "-c";
+	conf_argv[6] = service->config_path;
+	conf_argv[7] = "-e";
+	conf_argv[8] = binary_path;
+	memcpy(conf_argv+9, service->argv + 1,
 	       (service->argc) * sizeof(conf_argv[0]));
 	execv(conf_argv[0], (char **)conf_argv);
 	i_fatal("execv(%s) failed: %m", conf_argv[0]);
@@ -117,7 +120,7 @@
 	if (stat(path, &st) == 0 &&
 	    !S_ISSOCK(st.st_mode) && !S_ISFIFO(st.st_mode)) {
 		/* it's a file, not a socket/pipe */
-		master_service_exec_config(service, input->preserve_home);
+		master_service_exec_config(service, input);
 	}
 }
 


More information about the dovecot-cvs mailing list