]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imap-login: Convert imap_id_send to a strlist setting
authorKarl Fleischmann <karl.fleischmann@open-xchange.com>
Tue, 16 Jan 2024 12:31:14 +0000 (13:31 +0100)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 12 Feb 2025 10:34:12 +0000 (12:34 +0200)
src/imap-login/imap-login-cmd-id.c
src/imap-login/imap-login-settings.c
src/imap-login/imap-login-settings.h

index 273a171c5324dd00f915116eea5e8e9799fae09f..77ce670b81252e5233edb14bda53bd4bf836f021 100644 (file)
@@ -287,6 +287,8 @@ static void cmd_id_copy_params(struct imap_client *client,
 
 static void cmd_id_finish(struct imap_client *client)
 {
+       const char *id_param_string;
+
        if (!client->id_logged) {
                client->id_logged = TRUE;
 
@@ -299,9 +301,10 @@ static void cmd_id_finish(struct imap_client *client)
                }
        }
 
+       id_param_string = t_array_const_string_join(&client->set->imap_id_send, " ");
        client_send_raw(&client->common,
                t_strdup_printf("* ID %s\r\n",
-                       imap_id_reply_generate(client->set->imap_id_send)));
+                       imap_id_reply_generate(id_param_string)));
        const char *msg = "ID completed.";
        if (client->common.connection_trusted) {
                if (client->cmd_id->params->multiplex &&
index ff42607f2c165e932d8b053c2b6b89fce288af65..1d8746cfa1d4077cde5464424d6672788ae14381 100644 (file)
@@ -52,25 +52,33 @@ const struct setting_keyvalue imap_login_service_settings_defaults[] = {
 
 static const struct setting_define imap_login_setting_defines[] = {
        DEF(STR, imap_capability),
-       DEF(STR, imap_id_send),
        DEF(BOOL, imap_literal_minus),
        DEF(BOOL, imap_id_retain),
 
+       { .type = SET_STRLIST, .key = "imap_id_send",
+         .offset = offsetof(struct imap_login_settings, imap_id_send) },
+
        SETTING_DEFINE_LIST_END
 };
 
 static const struct imap_login_settings imap_login_default_settings = {
        .imap_capability = "",
-       .imap_id_send = "name *",
+       .imap_id_send = ARRAY_INIT,
        .imap_literal_minus = FALSE,
        .imap_id_retain = FALSE,
 };
 
+static const struct setting_keyvalue imap_login_default_settings_keyvalue[] = {
+       { "imap_id_send/name", DOVECOT_NAME },
+       { NULL, NULL },
+};
+
 const struct setting_parser_info imap_login_setting_parser_info = {
        .name = "imap_login",
 
        .defines = imap_login_setting_defines,
        .defaults = &imap_login_default_settings,
+       .default_settings = imap_login_default_settings_keyvalue,
 
        .struct_size = sizeof(struct imap_login_settings),
        .pool_offset1 = 1 + offsetof(struct imap_login_settings, pool),
index e85b0ff4038dd86d9f18e4ea2404396aace742ec..cfdf5b843e9573676b704b94065fd15ada44e6cf 100644 (file)
@@ -4,7 +4,7 @@
 struct imap_login_settings {
        pool_t pool;
        const char *imap_capability;
-       const char *imap_id_send;
+       ARRAY_TYPE(const_string) imap_id_send;
        bool imap_literal_minus;
        bool imap_id_retain;
 };