dovecot-2.0-sslstream: lib-master: Added _NO_CONFIG_SETTIGS and ...

dovecot at dovecot.org dovecot at dovecot.org
Sat Feb 13 02:55:10 EET 2010


details:   http://hg.dovecot.org/dovecot-2.0-sslstream/rev/4d21bb0fff3a
changeset: 10093:4d21bb0fff3a
user:      Timo Sirainen <tss at iki.fi>
date:      Sun Oct 18 15:33:13 2009 -0400
description:
lib-master: Added _NO_CONFIG_SETTIGS and _NO_ENV_SETTINGS flags.

diffstat:

4 files changed, 23 insertions(+), 16 deletions(-)
src/lib-master/master-service-private.h  |    1 -
src/lib-master/master-service-settings.c |   30 +++++++++++++++++-------------
src/lib-master/master-service.c          |    2 +-
src/lib-master/master-service.h          |    6 +++++-

diffs (86 lines):

diff -r 6a1c96577476 -r 4d21bb0fff3a src/lib-master/master-service-private.h
--- a/src/lib-master/master-service-private.h	Sun Oct 18 15:24:12 2009 -0400
+++ b/src/lib-master/master-service-private.h	Sun Oct 18 15:33:13 2009 -0400
@@ -46,7 +46,6 @@ struct master_service {
 	unsigned int keep_environment:1;
 	unsigned int log_directly:1;
 	unsigned int initial_status_sent:1;
-	unsigned int default_settings:1;
 	unsigned int die_with_master:1;
 	unsigned int call_avail_overflow:1;
 };
diff -r 6a1c96577476 -r 4d21bb0fff3a src/lib-master/master-service-settings.c
--- a/src/lib-master/master-service-settings.c	Sun Oct 18 15:24:12 2009 -0400
+++ b/src/lib-master/master-service-settings.c	Sun Oct 18 15:33:13 2009 -0400
@@ -192,7 +192,8 @@ int master_service_settings_read(struct 
 	int ret, fd = -1;
 	time_t now, timeout;
 
-	if (getenv("DOVECONF_ENV") == NULL && !service->default_settings) {
+	if (getenv("DOVECONF_ENV") == NULL &&
+	    (service->flags & MASTER_SERVICE_FLAG_NO_CONFIG_SETTINGS) == 0) {
 		path = input->config_path != NULL ? input->config_path :
 			master_service_get_config_path(service);
 		fd = master_service_read_config(service, path, input, error_r);
@@ -258,18 +259,21 @@ int master_service_settings_read(struct 
 	else if (fd != -1)
 		(void)close(fd);
 
-	/* let environment override settings. especially useful for the
-	   settings from userdb. */
-	if (settings_parse_environ(parser) < 0) {
-		*error_r = settings_parser_get_error(parser);
-		return -1;
-	}
-	env = getenv("VARS_EXPANDED");
-	if (env != NULL) T_BEGIN {
-		keys = t_strsplit(env, " ");
-		settings_parse_set_keys_expandeded(parser, service->set_pool,
-						   keys);
-	} T_END;
+	if ((service->flags & MASTER_SERVICE_FLAG_NO_ENV_SETTINGS) == 0) {
+		/* let environment override settings. especially useful for the
+		   settings from userdb. */
+		if (settings_parse_environ(parser) < 0) {
+			*error_r = settings_parser_get_error(parser);
+			return -1;
+		}
+		env = getenv("VARS_EXPANDED");
+		if (env != NULL) T_BEGIN {
+			keys = t_strsplit(env, " ");
+			settings_parse_set_keys_expandeded(parser,
+							   service->set_pool,
+							   keys);
+		} T_END;
+	}
 
 	if (array_is_created(&service->config_overrides)) {
 		if (master_service_apply_config_overrides(service, parser,
diff -r 6a1c96577476 -r 4d21bb0fff3a src/lib-master/master-service.c
--- a/src/lib-master/master-service.c	Sun Oct 18 15:24:12 2009 -0400
+++ b/src/lib-master/master-service.c	Sun Oct 18 15:33:13 2009 -0400
@@ -205,7 +205,7 @@ bool master_service_parse_option(struct 
 		array_append(&service->config_overrides, &arg, 1);
 		break;
 	case 'O':
-		service->default_settings = TRUE;
+		service->flags |= MASTER_SERVICE_FLAG_NO_CONFIG_SETTINGS;
 		break;
 	case 's':
 		if ((i = atoi(arg)) < 0)
diff -r 6a1c96577476 -r 4d21bb0fff3a src/lib-master/master-service.h
--- a/src/lib-master/master-service.h	Sun Oct 18 15:24:12 2009 -0400
+++ b/src/lib-master/master-service.h	Sun Oct 18 15:33:13 2009 -0400
@@ -13,7 +13,11 @@ enum master_service_flags {
 	MASTER_SERVICE_FLAG_DONT_LOG_TO_STDERR	= 0x04,
 	/* Service is going to do multiple configuration lookups,
 	   keep the connection to config service open. */
-	MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN	= 0x08
+	MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN	= 0x08,
+	/* Don't read settings by executing config binary */
+	MASTER_SERVICE_FLAG_NO_CONFIG_SETTINGS	= 0x10,
+	/* Don't read settings from environment */
+	MASTER_SERVICE_FLAG_NO_ENV_SETTINGS	= 0x20
 };
 
 struct master_service_connection {


More information about the dovecot-cvs mailing list