]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-master: Earlier config file path fix broke reusing existing config socket lookups.
authorTimo Sirainen <tss@iki.fi>
Fri, 12 Sep 2014 09:55:12 +0000 (12:55 +0300)
committerTimo Sirainen <tss@iki.fi>
Fri, 12 Sep 2014 09:55:12 +0000 (12:55 +0300)
src/lib-master/master-service-private.h
src/lib-master/master-service-settings.c
src/lib-master/master-service.c

index ccba6a6b1af49505288385c5610407d1bd001f52..bae6b6833ae3f39a186ecff957606ac39a98d9d4 100644 (file)
@@ -70,9 +70,10 @@ struct master_service {
        unsigned int initial_status_sent:1;
        unsigned int die_with_master:1;
        unsigned int call_avail_overflow:1;
-       unsigned int config_path_is_default:1;
+       unsigned int config_path_changed_with_param:1;
        unsigned int want_ssl_settings:1;
        unsigned int ssl_ctx_initialized:1;
+       unsigned int config_path_from_master:1;
 };
 
 void master_service_io_listeners_add(struct master_service *service);
index a93048fc405a710ac574d97541eb7988199f1ea0..b9b61b5cfa511b54d977fecc1c96bb8a35c0e4f2 100644 (file)
@@ -178,14 +178,16 @@ master_service_open_config(struct master_service *service,
                master_service_get_config_path(service);
 
        if (service->config_fd != -1 && input->config_path == NULL &&
-           service->config_path_is_default) {
+           !service->config_path_changed_with_param) {
                /* use the already opened config socket */
                fd = service->config_fd;
                service->config_fd = -1;
                return fd;
        }
 
-       if (service->config_path_is_default && input->config_path == NULL) {
+       if (!service->config_path_from_master &&
+           !service->config_path_changed_with_param &&
+           input->config_path == NULL) {
                /* first try to connect to the default config socket.
                   configuration may contain secrets, so in default config
                   this fails because the socket is 0600. it's useful for
index 65b27531b7ec7c77e0b801666cfe1ebae5bc3c94..f222984357dd652025c12c7c24f2ac519d9d5459 100644 (file)
@@ -160,10 +160,10 @@ master_service_init(const char *name, enum master_service_flags flags,
        service->config_fd = -1;
 
        service->config_path = i_strdup(getenv(MASTER_CONFIG_FILE_ENV));
-       if (service->config_path == NULL) {
+       if (service->config_path == NULL)
                service->config_path = i_strdup(DEFAULT_CONFIG_FILE_PATH);
-               service->config_path_is_default = TRUE;
-       }
+       else
+               service->config_path_from_master = TRUE;
 
        if ((flags & MASTER_SERVICE_FLAG_STANDALONE) == 0) {
                service->version_string = getenv(MASTER_DOVECOT_VERSION_ENV);
@@ -370,13 +370,13 @@ bool master_service_parse_option(struct master_service *service,
        switch (opt) {
        case 'c':
                service->config_path = i_strdup(arg);
-               service->config_path_is_default = FALSE;
+               service->config_path_changed_with_param = TRUE;
                break;
        case 'i':
                if (!get_instance_config(arg, &path))
                        i_fatal("Unknown instance name: %s", arg);
                service->config_path = i_strdup(path);
-               service->config_path_is_default = FALSE;
+               service->config_path_changed_with_param = TRUE;
                break;
        case 'k':
                service->keep_environment = TRUE;