From 6f9fed541df0e3602d2923a655a5167d96814565 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan.bosch@open-xchange.com>
Date: Sun, 29 Sep 2024 00:26:05 +0200
Subject: [PATCH] plugins: imapsieve: imap-sieve-plugin - Move imapsieve_url
 setting handling to imap-sieve-storage.c

---
 src/plugins/imapsieve/imap-sieve-plugin.c  | 17 +++--------------
 src/plugins/imapsieve/imap-sieve-storage.c | 15 ++++++++++++---
 src/plugins/imapsieve/imap-sieve-storage.h |  2 +-
 3 files changed, 16 insertions(+), 18 deletions(-)

diff --git a/src/plugins/imapsieve/imap-sieve-plugin.c b/src/plugins/imapsieve/imap-sieve-plugin.c
index 9389b8de3..90ce5b437 100644
--- a/src/plugins/imapsieve/imap-sieve-plugin.c
+++ b/src/plugins/imapsieve/imap-sieve-plugin.c
@@ -19,20 +19,9 @@ static void imap_sieve_client_created(struct client **clientp)
 {
 	struct client *client = *clientp;
 	struct mail_user *user = client->user;
-	const char *url = NULL;
-
-	if (mail_user_is_plugin_loaded(user, imap_sieve_module)) {
-		url = mail_user_plugin_getenv(user, "imapsieve_url");
-		// FIXME: parse the URL and report error if it is bad
-		if (url != NULL && str_begins_icase_with(url, "sieve:")) {
-			client_add_capability(client, t_strconcat(
-				"IMAPSIEVE=", url, NULL));
-		} else {
-			url = NULL;
-		}
-
-		imap_sieve_storage_client_created(client, (url != NULL));
-	}
+
+	if (mail_user_is_plugin_loaded(user, imap_sieve_module))
+		imap_sieve_storage_client_created(client);
 
 	if (next_hook_client_created != NULL)
 		next_hook_client_created(clientp);
diff --git a/src/plugins/imapsieve/imap-sieve-storage.c b/src/plugins/imapsieve/imap-sieve-storage.c
index 538fed2f8..afa6e09e7 100644
--- a/src/plugins/imapsieve/imap-sieve-storage.c
+++ b/src/plugins/imapsieve/imap-sieve-storage.c
@@ -1171,14 +1171,23 @@ static void imap_sieve_command_post(struct client_command_context *cmd)
  * Client
  */
 
-void imap_sieve_storage_client_created(struct client *client, bool user_script)
+void imap_sieve_storage_client_created(struct client *client)
 {
 	struct mail_user *user = client->user;
 	struct imap_sieve_user *isuser = IMAP_SIEVE_USER_CONTEXT_REQUIRE(user);
-	const char *set;
+	const char *url, *set;
+
+	url = mail_user_plugin_getenv(user, "imapsieve_url");
+	// FIXME: parse the URL and report error if it is bad
+	if (url != NULL && str_begins_icase_with(url, "sieve:")) {
+		client_add_capability(client,
+			t_strconcat("IMAPSIEVE=", url, NULL));
+	} else {
+		url = NULL;
+	}
 
 	isuser->client = client;
-	isuser->user_script = user_script;
+	isuser->user_script = (url != NULL && *url != '\0');
 
 	set = mail_user_plugin_getenv(user, "imapsieve_expunge_discarded");
 	isuser->expunge_discarded = (set != NULL &&
diff --git a/src/plugins/imapsieve/imap-sieve-storage.h b/src/plugins/imapsieve/imap-sieve-storage.h
index 4defe6250..e44cdf3be 100644
--- a/src/plugins/imapsieve/imap-sieve-storage.h
+++ b/src/plugins/imapsieve/imap-sieve-storage.h
@@ -4,6 +4,6 @@
 void imap_sieve_storage_init(struct module *module);
 void imap_sieve_storage_deinit(void);
 
-void imap_sieve_storage_client_created(struct client *client, bool user_script);
+void imap_sieve_storage_client_created(struct client *client);
 
 #endif
-- 
GitLab