changeset 7930:b4286cde68d0 HEAD

CONDSTORE: Return HIGHESTMODSEQ correctly even if indexes are in memory.
author Timo Sirainen <tss@iki.fi>
date Sat, 21 Jun 2008 14:03:59 +0300
parents 55d1a2bf4573
children 502cfdcc5650
files src/imap/cmd-select.c src/lib-storage/index/index-status.c src/lib-storage/mail-storage.h
diffstat 3 files changed, 5 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/imap/cmd-select.c	Sat Jun 21 13:48:42 2008 +0300
+++ b/src/imap/cmd-select.c	Sat Jun 21 14:03:59 2008 +0300
@@ -305,7 +305,7 @@
 			 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 {
--- a/src/lib-storage/index/index-status.c	Sat Jun 21 13:48:42 2008 +0300
+++ b/src/lib-storage/index/index-status.c	Sat Jun 21 14:03:59 2008 +0300
@@ -26,8 +26,8 @@
 	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);
 	}
--- a/src/lib-storage/mail-storage.h	Sat Jun 21 13:48:42 2008 +0300
+++ b/src/lib-storage/mail-storage.h	Sat Jun 21 14:03:59 2008 +0300
@@ -193,6 +193,8 @@
 
 	/* 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 {