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, ") ");