From: Karl Fleischmann Date: Tue, 16 Jan 2024 12:31:14 +0000 (+0100) Subject: imap-login: Convert imap_id_send to a strlist setting X-Git-Tag: 2.4.1~1046 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8bc047262bad20c8255bc003dcb9e3485fefeedc;p=thirdparty%2Fdovecot%2Fcore.git imap-login: Convert imap_id_send to a strlist setting --- diff --git a/src/imap-login/imap-login-cmd-id.c b/src/imap-login/imap-login-cmd-id.c index 273a171c53..77ce670b81 100644 --- a/src/imap-login/imap-login-cmd-id.c +++ b/src/imap-login/imap-login-cmd-id.c @@ -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 && diff --git a/src/imap-login/imap-login-settings.c b/src/imap-login/imap-login-settings.c index ff42607f2c..1d8746cfa1 100644 --- a/src/imap-login/imap-login-settings.c +++ b/src/imap-login/imap-login-settings.c @@ -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), diff --git a/src/imap-login/imap-login-settings.h b/src/imap-login/imap-login-settings.h index e85b0ff403..cfdf5b843e 100644 --- a/src/imap-login/imap-login-settings.h +++ b/src/imap-login/imap-login-settings.h @@ -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; };