From 11f38418109e3650f3cf5f5d1c0ee69843f4587a Mon Sep 17 00:00:00 2001
From: Timo Sirainen <timo.sirainen@open-xchange.com>
Date: Sat, 11 Mar 2023 01:25:43 +0200
Subject: [PATCH] global: Don't rely on mail_storage_service_lookup*() to read
 settings

---
 src/lib-sieve-tool/sieve-tool.c            |  6 ++++--
 src/lib-sieve/util/test-edit-mail.c        |  3 +++
 src/managesieve/main.c                     |  3 +++
 src/managesieve/managesieve-capabilities.c | 14 ++------------
 4 files changed, 12 insertions(+), 14 deletions(-)

diff --git a/src/lib-sieve-tool/sieve-tool.c b/src/lib-sieve-tool/sieve-tool.c
index c2320f0e4..99662174c 100644
--- a/src/lib-sieve-tool/sieve-tool.c
+++ b/src/lib-sieve-tool/sieve-tool.c
@@ -138,6 +138,7 @@ sieve_tool_init(const char *name, int *argc, char **argv[],
 		MASTER_SERVICE_FLAG_STANDALONE |
 		MASTER_SERVICE_FLAG_DONT_SEND_STATS |
 		MASTER_SERVICE_FLAG_NO_INIT_DATASTACK_FRAME;
+	const char *error;
 
 	if (no_config)
 		service_flags |= MASTER_SERVICE_FLAG_NO_CONFIG_SETTINGS;
@@ -151,6 +152,8 @@ sieve_tool_init(const char *name, int *argc, char **argv[],
 
 	i_array_init(&tool->sieve_plugins, 16);
 
+	if (master_service_settings_read_simple(master_service, &error) < 0)
+		i_fatal("%s", error);
 	return tool;
 }
 
@@ -221,8 +224,7 @@ sieve_tool_init_finish(struct sieve_tool *tool, bool init_mailstore,
 {
 	enum mail_storage_service_flags storage_service_flags =
 		MAIL_STORAGE_SERVICE_FLAG_NO_CHDIR |
-		MAIL_STORAGE_SERVICE_FLAG_NO_LOG_INIT |
-		MAIL_STORAGE_SERVICE_FLAG_USE_SYSEXITS;
+		MAIL_STORAGE_SERVICE_FLAG_NO_LOG_INIT;
 	struct mail_storage_service_input service_input;
 	struct sieve_environment svenv;
 	const char *username = tool->username;
diff --git a/src/lib-sieve/util/test-edit-mail.c b/src/lib-sieve/util/test-edit-mail.c
index 4051d664a..e29bb85fb 100644
--- a/src/lib-sieve/util/test-edit-mail.c
+++ b/src/lib-sieve/util/test-edit-mail.c
@@ -10,6 +10,7 @@
 #include "istream-crlf.h"
 #include "unlink-directory.h"
 #include "master-service.h"
+#include "master-service-settings.h"
 #include "istream-header-filter.h"
 #include "mail-storage.h"
 #include "mail-storage-service.h"
@@ -882,6 +883,8 @@ int main(int argc, char *argv[])
 
 	master_service = master_service_init("test-edit-header", service_flags,
 					     &argc, &argv, "");
+	if (master_service_settings_read_simple(master_service, &error) < 0)
+		i_fatal("%s", error);
 	master_service_init_finish(master_service);
 
 	if (t_get_working_dir(&cwd, &error) < 0)
diff --git a/src/managesieve/main.c b/src/managesieve/main.c
index 7c280b5f3..57fbca947 100644
--- a/src/managesieve/main.c
+++ b/src/managesieve/main.c
@@ -349,6 +349,9 @@ int main(int argc, char *argv[])
 	/* plugins may want to add commands, so this needs to be called early */
 	commands_init();
 
+	if (master_service_settings_read_simple(master_service, &error) < 0)
+		i_fatal("%s", error);
+
 	/* Dump capabilities if requested */
 	if (getenv("DUMP_CAPABILITY") != NULL) {
 		i_set_debug_file("/dev/null");
diff --git a/src/managesieve/managesieve-capabilities.c b/src/managesieve/managesieve-capabilities.c
index 24042af95..4388b4efd 100644
--- a/src/managesieve/managesieve-capabilities.c
+++ b/src/managesieve/managesieve-capabilities.c
@@ -22,17 +22,6 @@
  */
 
 
-static const struct plugin_settings *plugin_settings_read(void)
-{
-	const char *error;
-
-	if (master_service_settings_read_simple(master_service, &error) < 0)
-		i_fatal("Error reading configuration: %s", error);
-
-	return master_service_settings_get_or_fatal(NULL,
-		&managesieve_plugin_setting_parser_info);
-}
-
 static const char *
 plugin_settings_get(const struct plugin_settings *set, const char *identifier)
 {
@@ -79,7 +68,8 @@ void managesieve_capabilities_dump(void)
 
 	/* Read plugin settings */
 
-	global_plugin_settings = plugin_settings_read();
+	global_plugin_settings = master_service_settings_get_or_fatal(NULL,
+		&managesieve_plugin_setting_parser_info);
 
 	/* Initialize Sieve engine */
 
-- 
GitLab