diff --git a/src/managesieve-login/client.c b/src/managesieve-login/client.c index 6def80b4a2bf1a63a659920562be4f56b86efa35..8e5dded63b9eee1ff4c7e6489d46f7472bb2a340 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 880970a4aba841cca5ce80c97fdc1139aad283cc..2819d2ad27bf71c5d9ba0ff8192d236dbff4fc3c 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 aef5472ba7d180df82b338b444f28d9ae6a95f84..c20a9db75fdb27ae95afcb8c9f16a285d631cf7d 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;