dovecot-2.0-sslstream: lib-master: When standalone binary reads ...

dovecot at dovecot.org dovecot at dovecot.org
Sat Feb 13 02:58:49 EET 2010


details:   http://hg.dovecot.org/dovecot-2.0-sslstream/rev/9a6015507c78
changeset: 10607:9a6015507c78
user:      Timo Sirainen <tss at iki.fi>
date:      Fri Jan 29 17:15:36 2010 +0200
description:
lib-master: When standalone binary reads config from config socket, ignore environment.

diffstat:

1 file changed, 13 insertions(+), 5 deletions(-)
src/lib-master/master-service-settings.c |   18 +++++++++++++-----

diffs (69 lines):

diff -r 992bb0c85ee9 -r 9a6015507c78 src/lib-master/master-service-settings.c
--- a/src/lib-master/master-service-settings.c	Fri Jan 29 16:42:02 2010 +0200
+++ b/src/lib-master/master-service-settings.c	Fri Jan 29 17:15:36 2010 +0200
@@ -103,7 +103,8 @@ static int
 static int
 master_service_open_config(struct master_service *service,
 			   const struct master_service_settings_input *input,
-			   const char **path_r, const char **error_r)
+			   const char **path_r, const char **error_r,
+			   bool *standalone_config_from_socket_r)
 {
 	const char *path;
 	struct stat st;
@@ -111,6 +112,7 @@ master_service_open_config(struct master
 
 	*path_r = path = input->config_path != NULL ? input->config_path :
 		master_service_get_config_path(service);
+	*standalone_config_from_socket_r = FALSE;
 
 	if (service->config_fd != -1 && input->config_path == NULL) {
 		/* use the already opened config socket */
@@ -127,6 +129,7 @@ master_service_open_config(struct master
 		fd = net_connect_unix(DOVECOT_CONFIG_SOCKET_PATH);
 		if (fd >= 0) {
 			*path_r = DOVECOT_CONFIG_SOCKET_PATH;
+			*standalone_config_from_socket_r = TRUE;
 			net_set_nonblock(fd, FALSE);
 			return fd;
 		}
@@ -153,11 +156,13 @@ static int
 static int
 master_service_read_config(struct master_service *service,
 			   const struct master_service_settings_input *input,
-			   const char **path_r, const char **error_r)
+			   const char **path_r, const char **error_r,
+			   bool *standalone_config_from_socket_r)
 {
 	int fd, ret;
 
-	fd = master_service_open_config(service, input, path_r, error_r);
+	fd = master_service_open_config(service, input, path_r, error_r,
+					standalone_config_from_socket_r);
 	if (fd == -1)
 		return -1;
 
@@ -230,10 +235,12 @@ int master_service_settings_read(struct 
 	unsigned int i;
 	int ret, fd = -1;
 	time_t now, timeout;
+	bool standalone_config_from_socket = FALSE;
 
 	if (getenv("DOVECONF_ENV") == NULL &&
 	    (service->flags & MASTER_SERVICE_FLAG_NO_CONFIG_SETTINGS) == 0) {
-		fd = master_service_read_config(service, input, &path, error_r);
+		fd = master_service_read_config(service, input, &path, error_r,
+						&standalone_config_from_socket);
 		if (fd == -1)
 			return -1;
 	}
@@ -298,7 +305,8 @@ int master_service_settings_read(struct 
 	else if (fd != -1)
 		(void)close(fd);
 
-	if ((service->flags & MASTER_SERVICE_FLAG_NO_ENV_SETTINGS) == 0) {
+	if ((service->flags & MASTER_SERVICE_FLAG_NO_ENV_SETTINGS) == 0 &&
+	    !standalone_config_from_socket) {
 		/* let environment override settings. especially useful for the
 		   settings from userdb. */
 		if (settings_parse_environ(parser) < 0) {


More information about the dovecot-cvs mailing list