dovecot-2.1: imapc: Fixed handling keywords.
dovecot at dovecot.org
dovecot at dovecot.org
Fri Oct 7 21:07:34 EEST 2011
details: http://hg.dovecot.org/dovecot-2.1/rev/92dd30cf0d22
changeset: 13619:92dd30cf0d22
user: Timo Sirainen <tss at iki.fi>
date: Fri Oct 07 21:15:52 2011 +0300
description:
imapc: Fixed handling keywords.
The status->keywords must point to mail_index's keywords.
diffstat:
src/lib-storage/index/imapc/imapc-mailbox.c | 13 ++++---------
src/lib-storage/index/imapc/imapc-storage.c | 3 ---
src/lib-storage/index/imapc/imapc-storage.h | 1 -
3 files changed, 4 insertions(+), 13 deletions(-)
diffs (70 lines):
diff -r aaa0463aa66f -r 92dd30cf0d22 src/lib-storage/index/imapc/imapc-mailbox.c
--- a/src/lib-storage/index/imapc/imapc-mailbox.c Fri Oct 07 21:14:58 2011 +0300
+++ b/src/lib-storage/index/imapc/imapc-mailbox.c Fri Oct 07 21:15:52 2011 +0300
@@ -443,6 +443,7 @@
{
const struct imap_arg *flags_args, *arg;
const char *flag;
+ unsigned int idx;
i_assert(reply->args[0].type == IMAP_ARG_ATOM);
@@ -450,7 +451,6 @@
return;
mbox->permanent_flags = 0;
- array_clear(&mbox->permanent_keywords);
mbox->box.disallow_new_keywords = TRUE;
for (arg = flags_args; arg->type != IMAP_ARG_EOL; arg++) {
@@ -462,16 +462,11 @@
else if (*flag == '\\')
mbox->permanent_flags |= imap_parse_system_flag(flag);
else {
- /* this wastes some memory when called multiple times,
- but that should happen quite rarely */
- flag = p_strdup(mbox->box.pool, flag);
- array_append(&mbox->permanent_keywords, &flag, 1);
+ /* we'll simply make sure that it exists in the index */
+ mail_index_keyword_lookup_or_create(mbox->box.index,
+ flag, &idx);
}
}
- /* NULL-terminate it */
- (void)array_append_space(&mbox->permanent_keywords);
- array_delete(&mbox->permanent_keywords,
- array_count(&mbox->permanent_keywords)-1, 1);
}
void imapc_mailbox_register_untagged(struct imapc_mailbox *mbox,
diff -r aaa0463aa66f -r 92dd30cf0d22 src/lib-storage/index/imapc/imapc-storage.c
--- a/src/lib-storage/index/imapc/imapc-storage.c Fri Oct 07 21:14:58 2011 +0300
+++ b/src/lib-storage/index/imapc/imapc-storage.c Fri Oct 07 21:15:52 2011 +0300
@@ -325,7 +325,6 @@
p_array_init(&mbox->untagged_callbacks, pool, 16);
p_array_init(&mbox->resp_text_callbacks, pool, 16);
p_array_init(&mbox->fetch_mails, pool, 16);
- p_array_init(&mbox->permanent_keywords, pool, 32);
p_array_init(&mbox->delayed_expunged_uids, pool, 16);
mbox->prev_mail_cache.fd = -1;
imapc_mailbox_register_callbacks(mbox);
@@ -539,8 +538,6 @@
struct mailbox_status *status_r)
{
index_storage_get_status(&mbox->box, items, status_r);
- if ((items & STATUS_KEYWORDS) != 0)
- status_r->keywords = &mbox->permanent_keywords;
if ((items & STATUS_PERMANENT_FLAGS) != 0)
status_r->permanent_flags = mbox->permanent_flags;
}
diff -r aaa0463aa66f -r 92dd30cf0d22 src/lib-storage/index/imapc/imapc-storage.h
--- a/src/lib-storage/index/imapc/imapc-storage.h Fri Oct 07 21:14:58 2011 +0300
+++ b/src/lib-storage/index/imapc/imapc-storage.h Fri Oct 07 21:15:52 2011 +0300
@@ -64,7 +64,6 @@
ARRAY_DEFINE(resp_text_callbacks, struct imapc_mailbox_event_callback);
enum mail_flags permanent_flags;
- ARRAY_TYPE(keywords) permanent_keywords;
ARRAY_TYPE(uint32_t) delayed_expunged_uids;
uint32_t sync_uid_validity;
More information about the dovecot-cvs
mailing list