static void cmd_id_finish(struct imap_client *client)
{
+ const char *id_param_string;
+
if (!client->id_logged) {
client->id_logged = TRUE;
}
}
+ 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 &&
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),