Mercurial > dovecot > original-hg > dovecot-1.2
diff src/imap/imap-fetch.c @ 7057:81f4c9689c18 HEAD
FLAGS/PERMENENTFLAGS weren't always sent to client early enough. Also
optimized sending keywords with FETCH FLAGS.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sat, 29 Dec 2007 07:11:12 +0200 |
parents | c4f4fa03e14e |
children | 7ed926ed7aa4 |
line wrap: on
line diff
--- a/src/imap/imap-fetch.c Sat Dec 29 06:54:40 2007 +0200 +++ b/src/imap/imap-fetch.c Sat Dec 29 07:11:12 2007 +0200 @@ -99,6 +99,8 @@ ctx->cur_str = str_new(default_pool, 8192); ctx->all_headers_buf = buffer_create_dynamic(cmd->pool, 128); p_array_init(&ctx->handlers, cmd->pool, 16); + p_array_init(&ctx->tmp_keywords, cmd->pool, + client->keywords.announce_count + 8); ctx->line_finished = TRUE; return ctx; } @@ -514,8 +516,6 @@ const char *const *keywords; flags = mail_get_flags(mail); - keywords = mail_get_keywords(mail); - if (ctx->flags_update_seen && (flags & MAIL_SEEN) == 0) { /* Add \Seen flag */ ctx->seen_flags_changed = TRUE; @@ -525,6 +525,9 @@ return 1; } + keywords = client_get_keyword_names(ctx->client, &ctx->tmp_keywords, + mail_get_keyword_indexes(mail)); + str_append(ctx->cur_str, "FLAGS ("); imap_write_flags(ctx->cur_str, flags, keywords); str_append(ctx->cur_str, ") ");