From 771a81e4837f12719e11b19ee5d794a3c43b861b Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Sat, 17 Dec 2022 21:26:26 +0200 Subject: [PATCH] lib-master, global: Remove MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN The config is now always kept open. --- src/doveadm/doveadm.c | 1 - src/doveadm/main.c | 1 - src/imap-urlauth/imap-urlauth-worker.c | 2 -- src/imap-urlauth/imap-urlauth.c | 2 -- src/imap/main.c | 2 -- src/indexer/indexer-worker.c | 3 +-- src/lib-master/master-service-settings.c | 34 ------------------------ src/lib-master/master-service-settings.h | 3 --- src/lib-master/master-service.c | 6 ----- src/lib-master/master-service.h | 4 --- src/lmtp/main.c | 2 -- src/login-common/main.c | 1 - src/plugins/quota/quota-status.c | 3 +-- src/pop3/main.c | 2 -- src/submission/main.c | 2 -- 15 files changed, 2 insertions(+), 66 deletions(-) diff --git a/src/doveadm/doveadm.c b/src/doveadm/doveadm.c index c691f2a67c..9bc9fc88de 100644 --- a/src/doveadm/doveadm.c +++ b/src/doveadm/doveadm.c @@ -259,7 +259,6 @@ int main(int argc, char *argv[]) { enum master_service_flags service_flags = MASTER_SERVICE_FLAG_STANDALONE | - MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN | MASTER_SERVICE_FLAG_NO_SSL_INIT | MASTER_SERVICE_FLAG_NO_INIT_DATASTACK_FRAME; const char *cmd_name; diff --git a/src/doveadm/main.c b/src/doveadm/main.c index e819fface7..5cde83f14a 100644 --- a/src/doveadm/main.c +++ b/src/doveadm/main.c @@ -100,7 +100,6 @@ static void main_deinit(void) int main(int argc, char *argv[]) { enum master_service_flags service_flags = - MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN | MASTER_SERVICE_FLAG_HAVE_STARTTLS; int c; diff --git a/src/imap-urlauth/imap-urlauth-worker.c b/src/imap-urlauth/imap-urlauth-worker.c index 1f42f5c730..97c6eb70e5 100644 --- a/src/imap-urlauth/imap-urlauth-worker.c +++ b/src/imap-urlauth/imap-urlauth-worker.c @@ -949,8 +949,6 @@ int main(int argc, char *argv[]) if (IS_STANDALONE()) { service_flags |= MASTER_SERVICE_FLAG_STANDALONE | MASTER_SERVICE_FLAG_STD_CLIENT; - } else { - service_flags |= MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN; } master_service = master_service_init("imap-urlauth-worker", service_flags, diff --git a/src/imap-urlauth/imap-urlauth.c b/src/imap-urlauth/imap-urlauth.c index f2d689479c..f10f4d1cef 100644 --- a/src/imap-urlauth/imap-urlauth.c +++ b/src/imap-urlauth/imap-urlauth.c @@ -235,8 +235,6 @@ int main(int argc, char *argv[]) if (IS_STANDALONE()) { service_flags |= MASTER_SERVICE_FLAG_STANDALONE | MASTER_SERVICE_FLAG_STD_CLIENT; - } else { - service_flags |= MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN; } master_service = master_service_init("imap-urlauth", service_flags, diff --git a/src/imap/main.c b/src/imap/main.c index 52b3f2fb36..135632ea66 100644 --- a/src/imap/main.c +++ b/src/imap/main.c @@ -504,8 +504,6 @@ int main(int argc, char *argv[]) if (IS_STANDALONE()) { service_flags |= MASTER_SERVICE_FLAG_STANDALONE | MASTER_SERVICE_FLAG_STD_CLIENT; - } else { - service_flags |= MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN; } master_service = master_service_init("imap", service_flags, diff --git a/src/indexer/indexer-worker.c b/src/indexer/indexer-worker.c index 43c5e87cbd..af2efb3dc4 100644 --- a/src/indexer/indexer-worker.c +++ b/src/indexer/indexer-worker.c @@ -43,8 +43,7 @@ static void drop_privileges(void) int main(int argc, char *argv[]) { - enum master_service_flags service_flags = - MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN; + enum master_service_flags service_flags = 0; enum mail_storage_service_flags storage_service_flags = MAIL_STORAGE_SERVICE_FLAG_USERDB_LOOKUP | MAIL_STORAGE_SERVICE_FLAG_TEMP_PRIV_DROP | diff --git a/src/lib-master/master-service-settings.c b/src/lib-master/master-service-settings.c index 4694073a70..2ffd4d9f5c 100644 --- a/src/lib-master/master-service-settings.c +++ b/src/lib-master/master-service-settings.c @@ -279,14 +279,6 @@ master_service_open_config(struct master_service *service, *path_r = path = input->config_path != NULL ? input->config_path : master_service_get_config_path(service); - if (service->config_fd != -1 && input->config_path == NULL && - !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_from_master && !service->config_path_changed_with_param && !input->always_exec && @@ -389,32 +381,6 @@ master_service_apply_config_overrides(struct master_service *service, return 0; } -void master_service_config_socket_try_open(struct master_service *service) -{ - struct master_service_settings_input input; - const char *path, *error; - int fd; - - /* we'll get here before command line parameters have been parsed, - so -O, -c and -i parameters haven't been handled yet at this point. - this means we could end up opening config socket connection - unnecessarily, but this isn't a problem. we'll just have to - ignore it later on. (unfortunately there isn't a master_service_*() - call where this function would be better called.) */ - if (getenv("DOVECONF_ENV") != NULL || - getenv(DOVECOT_CONFIG_FD_ENV) != NULL || - (service->flags & MASTER_SERVICE_FLAG_NO_CONFIG_SETTINGS) != 0) - return; - - i_zero(&input); - input.never_exec = TRUE; - fd = master_service_open_config(service, &input, &path, &error); - if (fd != -1) { - service->config_fd = fd; - fd_close_on_exec(service->config_fd, TRUE); - } -} - static void filter_string_parse_protocol(const char *filter_string, ARRAY_TYPE(const_string) *protocols) diff --git a/src/lib-master/master-service-settings.h b/src/lib-master/master-service-settings.h index 74fd0e2812..867c55d3cc 100644 --- a/src/lib-master/master-service-settings.h +++ b/src/lib-master/master-service-settings.h @@ -65,9 +65,6 @@ struct master_service_settings_output { extern const struct setting_parser_info master_service_setting_parser_info; -/* Try to open the config socket if it's going to be needed later by - master_service_settings_read*() */ -void master_service_config_socket_try_open(struct master_service *service); int master_service_settings_read(struct master_service *service, const struct master_service_settings_input *input, struct master_service_settings_output *output_r, diff --git a/src/lib-master/master-service.c b/src/lib-master/master-service.c index 926dd8f6c1..fcee505310 100644 --- a/src/lib-master/master-service.c +++ b/src/lib-master/master-service.c @@ -615,12 +615,6 @@ master_service_init(const char *name, enum master_service_flags flags, master_service_set_client_limit(service, 1); master_service_set_service_count(service, 1); } - if ((flags & MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN) != 0) { - /* since we're going to keep the config socket open anyway, - open it now so we can read settings even after privileges - are dropped. */ - master_service_config_socket_try_open(service); - } if ((flags & MASTER_SERVICE_FLAG_DONT_SEND_STATS) == 0) { /* Initialize stats-client early so it can see all events. */ value = getenv(DOVECOT_STATS_WRITER_SOCKET_PATH); diff --git a/src/lib-master/master-service.h b/src/lib-master/master-service.h index 4d94bd1244..7bb0a97c3d 100644 --- a/src/lib-master/master-service.h +++ b/src/lib-master/master-service.h @@ -17,10 +17,6 @@ enum master_service_flags { /* Log to configured log file instead of stderr. By default when _FLAG_STANDALONE is set, logging is done to stderr. */ MASTER_SERVICE_FLAG_DONT_LOG_TO_STDERR = 0x04, - /* Service is going to do multiple configuration lookups, - keep the connection to config service open. Also opens the config - socket before dropping privileges. */ - MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN = 0x08, /* Don't read settings, but use whatever is in environment */ MASTER_SERVICE_FLAG_NO_CONFIG_SETTINGS = 0x10, /* Use MASTER_LOGIN_NOTIFY_FD to track login overflow state */ diff --git a/src/lmtp/main.c b/src/lmtp/main.c index f24eb92a7f..ee4066c4cf 100644 --- a/src/lmtp/main.c +++ b/src/lmtp/main.c @@ -132,8 +132,6 @@ int main(int argc, char *argv[]) if (IS_STANDALONE()) { service_flags |= MASTER_SERVICE_FLAG_STANDALONE | MASTER_SERVICE_FLAG_STD_CLIENT; - } else { - service_flags |= MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN ; } master_service = master_service_init("lmtp", service_flags, diff --git a/src/login-common/main.c b/src/login-common/main.c index baf00c33a0..80376a226d 100644 --- a/src/login-common/main.c +++ b/src/login-common/main.c @@ -461,7 +461,6 @@ int login_binary_run(struct login_binary *binary, int argc, char *argv[]) { enum master_service_flags service_flags = - MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN | MASTER_SERVICE_FLAG_TRACK_LOGIN_STATE | MASTER_SERVICE_FLAG_HAVE_STARTTLS | MASTER_SERVICE_FLAG_NO_SSL_INIT; diff --git a/src/plugins/quota/quota-status.c b/src/plugins/quota/quota-status.c index 03db5595fb..7c8d4edd38 100644 --- a/src/plugins/quota/quota-status.c +++ b/src/plugins/quota/quota-status.c @@ -319,8 +319,7 @@ static void main_deinit(void) int main(int argc, char *argv[]) { - enum master_service_flags service_flags = - MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN; + enum master_service_flags service_flags = 0; int c; protocol = QUOTA_PROTOCOL_UNKNOWN; diff --git a/src/pop3/main.c b/src/pop3/main.c index 79ec6bb2e7..fd100457fb 100644 --- a/src/pop3/main.c +++ b/src/pop3/main.c @@ -381,8 +381,6 @@ int main(int argc, char *argv[]) if (IS_STANDALONE()) { service_flags |= MASTER_SERVICE_FLAG_STANDALONE | MASTER_SERVICE_FLAG_STD_CLIENT; - } else { - service_flags |= MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN; } /* diff --git a/src/submission/main.c b/src/submission/main.c index 6dadd81a90..4f51989661 100644 --- a/src/submission/main.c +++ b/src/submission/main.c @@ -364,8 +364,6 @@ int main(int argc, char *argv[]) if (IS_STANDALONE()) { service_flags |= MASTER_SERVICE_FLAG_STANDALONE | MASTER_SERVICE_FLAG_STD_CLIENT; - } else { - service_flags |= MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN; } master_service = master_service_init("submission", service_flags, -- 2.47.3