diff --git a/src/plugins/imapsieve/imap-sieve-plugin.c b/src/plugins/imapsieve/imap-sieve-plugin.c index 9389b8de3a2c21b8f48434b0de64ac78b2559f08..90ce5b4376731e9a7136b30bfadb482c8c954576 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 538fed2f8d7026bc74484b4352d8b1fb1399174d..afa6e09e7de6b1d373d48a9101e048f02f6a7da6 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 4defe62502d279d0301982ec00dc8c52d3eb8bff..e44cdf3bef4007498454873589a54c4db768ee56 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