Mercurial > dovecot > core-2.2
changeset 10606:9a6015507c78 HEAD
lib-master: When standalone binary reads config from config socket, ignore environment.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 29 Jan 2010 17:15:36 +0200 |
parents | 992bb0c85ee9 |
children | e9046fc7c6b4 |
files | src/lib-master/master-service-settings.c |
diffstat | 1 files changed, 13 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- 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 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 @@ *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 @@ 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 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 @@ 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 @@ 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) {