From b88ee5e795649854014543439d3f41c91fc9c72c Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan.bosch@open-xchange.com> Date: Wed, 6 Mar 2024 21:20:34 +0100 Subject: [PATCH] managesieve-login: managesieve-login-settings - Use BOOLLIST setting type for capability settings --- src/managesieve-login/client.c | 10 ++++++++-- src/managesieve-login/managesieve-login-settings.c | 8 ++++---- src/managesieve-login/managesieve-login-settings.h | 4 ++-- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/managesieve-login/client.c b/src/managesieve-login/client.c index 6def80b4a..8e5dded63 100644 --- a/src/managesieve-login/client.c +++ b/src/managesieve-login/client.c @@ -58,11 +58,17 @@ static void client_send_capabilities(struct client *client) { struct managesieve_client *msieve_client = container_of(client, struct managesieve_client, common); + const ARRAY_TYPE(const_string) *sieve_cap_list = + &msieve_client->set->managesieve_sieve_capability; + const ARRAY_TYPE(const_string) *notify_cap_list = + &msieve_client->set->managesieve_notify_capability; const char *sieve_cap, *notify_cap, *sasl_cap; T_BEGIN { - sieve_cap = msieve_client->set->managesieve_sieve_capability; - notify_cap = msieve_client->set->managesieve_notify_capability; + sieve_cap = t_strarray_join( + settings_boollist_get(sieve_cap_list), " "); + notify_cap = t_strarray_join( + settings_boollist_get(notify_cap_list), " "); sasl_cap = client_authenticate_get_capabilities(client); /* Default capabilities */ diff --git a/src/managesieve-login/managesieve-login-settings.c b/src/managesieve-login/managesieve-login-settings.c index 880970a4a..2819d2ad2 100644 --- a/src/managesieve-login/managesieve-login-settings.c +++ b/src/managesieve-login/managesieve-login-settings.c @@ -59,16 +59,16 @@ const struct setting_keyvalue managesieve_login_settings_service_settings_defaul static const struct setting_define managesieve_login_setting_defines[] = { DEF(STR, managesieve_implementation_string), - DEF(STR, managesieve_sieve_capability), - DEF(STR, managesieve_notify_capability), + DEF(BOOLLIST, managesieve_sieve_capability), + DEF(BOOLLIST, managesieve_notify_capability), SETTING_DEFINE_LIST_END }; static const struct managesieve_login_settings managesieve_login_default_settings = { .managesieve_implementation_string = DOVECOT_NAME " " PIGEONHOLE_NAME, - .managesieve_sieve_capability = "", - .managesieve_notify_capability = "", + .managesieve_sieve_capability = ARRAY_INIT, + .managesieve_notify_capability = ARRAY_INIT, }; const struct setting_parser_info managesieve_login_setting_parser_info = { diff --git a/src/managesieve-login/managesieve-login-settings.h b/src/managesieve-login/managesieve-login-settings.h index aef5472ba..c20a9db75 100644 --- a/src/managesieve-login/managesieve-login-settings.h +++ b/src/managesieve-login/managesieve-login-settings.h @@ -4,8 +4,8 @@ struct managesieve_login_settings { pool_t pool; const char *managesieve_implementation_string; - const char *managesieve_sieve_capability; - const char *managesieve_notify_capability; + ARRAY_TYPE(const_string) managesieve_sieve_capability; + ARRAY_TYPE(const_string) managesieve_notify_capability; }; extern const struct setting_parser_info managesieve_login_setting_parser_info; -- GitLab