From c950ca6e5ac13c488bd3e73f7078c5d81a0f1f46 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Sat, 21 Jun 2008 14:03:59 +0300 Subject: [PATCH] CONDSTORE: Return HIGHESTMODSEQ correctly even if indexes are in memory. --HG-- branch : HEAD --- src/imap/cmd-select.c | 2 +- src/lib-storage/index/index-status.c | 4 ++-- src/lib-storage/mail-storage.h | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/imap/cmd-select.c b/src/imap/cmd-select.c index 597cfdf3d3..0f5b0f2d1e 100644 --- a/src/imap/cmd-select.c +++ b/src/imap/cmd-select.c @@ -305,7 +305,7 @@ select_open(struct imap_select_context *ctx, const char *mailbox, bool readonly) t_strdup_printf("* OK [UIDNEXT %u] Predicted next UID", status.uidnext)); - if (status.highest_modseq == 0) { + if (status.nonpermanent_modseqs) { client_send_line(client, "* OK [NOMODSEQ] No permanent modsequences"); } else { diff --git a/src/lib-storage/index/index-status.c b/src/lib-storage/index/index-status.c index 05fadce66a..dde9cbb5ed 100644 --- a/src/lib-storage/index/index-status.c +++ b/src/lib-storage/index/index-status.c @@ -26,8 +26,8 @@ void index_storage_get_status(struct mailbox *box, status_r->unseen = hdr->messages_count - hdr->seen_messages_count; status_r->uidvalidity = hdr->uid_validity; status_r->uidnext = hdr->next_uid; - if ((items & STATUS_HIGHESTMODSEQ) != 0 && - !mail_index_is_in_memory(ibox->index)) { + status_r->nonpermanent_modseqs = mail_index_is_in_memory(ibox->index); + if ((items & STATUS_HIGHESTMODSEQ) != 0) { status_r->highest_modseq = mail_index_modseq_get_highest(ibox->view); } diff --git a/src/lib-storage/mail-storage.h b/src/lib-storage/mail-storage.h index 359fe0841f..30036529f3 100644 --- a/src/lib-storage/mail-storage.h +++ b/src/lib-storage/mail-storage.h @@ -193,6 +193,8 @@ struct mailbox_status { /* There are expunges that haven't been synced yet */ unsigned int sync_delayed_expunges:1; + /* Modseqs aren't permanent (index is in memory) */ + unsigned int nonpermanent_modseqs:1; }; struct mailbox_sync_rec { -- 2.47.3