changeset 7625:98a03cf8ad5d HEAD

CONDSTORE fixes
author Timo Sirainen <tss@iki.fi>
date Sat, 15 Mar 2008 10:14:12 +0200
parents 271131a1e060
children 96207583aaa0
files src/imap/cmd-search.c src/lib-index/mail-index-sync-ext.c src/lib-storage/index/index-mail.c src/lib-storage/index/index-search.c
diffstat 4 files changed, 11 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/imap/cmd-search.c	Sat Mar 15 08:45:04 2008 +0200
+++ b/src/imap/cmd-search.c	Sat Mar 15 10:14:12 2008 +0200
@@ -5,7 +5,6 @@
 #include "str.h"
 #include "commands.h"
 #include "mail-search.h"
-#include "mail-search-build.h"
 #include "imap-search.h"
 
 #define OUTBUF_SIZE 65536
@@ -29,7 +28,7 @@
 
 static bool imap_search_args_have_modseq(const struct mail_search_arg *sargs)
 {
-	for (; sargs->type != IMAP_ARG_EOL; sargs++) {
+	for (; sargs != NULL; sargs = sargs->next) {
 		switch (sargs->type) {
 		case SEARCH_MODSEQ:
 			return TRUE;
--- a/src/lib-index/mail-index-sync-ext.c	Sat Mar 15 08:45:04 2008 +0200
+++ b/src/lib-index/mail-index-sync-ext.c	Sat Mar 15 10:14:12 2008 +0200
@@ -5,6 +5,7 @@
 #include "buffer.h"
 #include "mail-index-view-private.h"
 #include "mail-index-sync-private.h"
+#include "mail-index-modseq.h"
 #include "mail-transaction-log.h"
 
 #include <stdlib.h>
@@ -381,8 +382,9 @@
 	ext = array_idx(&map->extensions, ext_map_idx);
 
 	/* <ext_hdr> <name> [padding] [header data] */
+	i_assert(ext_hdr->name_size == strlen(name));
 	buffer_append(hdr_buf, ext_hdr, sizeof(*ext_hdr));
-	buffer_append(hdr_buf, name, strlen(name));
+	buffer_append(hdr_buf, name, ext_hdr->name_size);
 	/* header must begin and end in correct alignment */
 	buffer_append_zero(hdr_buf,
 		MAIL_INDEX_HEADER_SIZE_ALIGN(hdr_buf->used) - hdr_buf->used +
@@ -396,6 +398,7 @@
 
         mail_index_sync_init_handlers(ctx);
 	sync_ext_reorder(map, ext_map_idx, 0);
+	i_assert(ext->record_offset != 0 || ext->record_size == 0);
 
 	*ext_map_idx_r = ext_map_idx;
 }
@@ -426,6 +429,7 @@
 		sync_ext_resize(&u, *ext_map_idx_r, ctx);
 	} else {
 		memset(&ext_hdr, 0, sizeof(ext_hdr));
+		ext_hdr.name_size = strlen(name);
 		ext_hdr.hdr_size = rext->hdr_size;
 		ext_hdr.record_size = rext->record_size;
 		ext_hdr.record_align = rext->record_align;
@@ -588,6 +592,9 @@
 		     u + 1, u->size);
 	map->hdr_base = map->hdr_copy_buf->data;
 
+	if (ext->index_idx == ctx->view->index->modseq_ext_id)
+		mail_index_modseq_hdr_update(ctx->modseq_ctx);
+
 	map->write_ext_header = TRUE;
 	return 1;
 }
--- a/src/lib-storage/index/index-mail.c	Sat Mar 15 08:45:04 2008 +0200
+++ b/src/lib-storage/index/index-mail.c	Sat Mar 15 10:14:12 2008 +0200
@@ -137,8 +137,7 @@
 
 	mail_index_modseq_enable(mail->ibox->index);
 	mail->data.modseq =
-		mail_index_modseq_lookup_highest(mail->trans->trans_view,
-						 _mail->seq);
+		mail_index_modseq_lookup(mail->trans->trans_view, _mail->seq);
 	return mail->data.modseq;
 }
 
--- a/src/lib-storage/index/index-search.c	Sat Mar 15 08:45:04 2008 +0200
+++ b/src/lib-storage/index/index-search.c	Sat Mar 15 10:14:12 2008 +0200
@@ -160,7 +160,7 @@
 			modseq = mail_index_modseq_lookup_keywords(ctx->view,
 					arg->value.keywords, ctx->mail_ctx.seq);
 		} else {
-			modseq = mail_index_modseq_lookup_highest(ctx->view,
+			modseq = mail_index_modseq_lookup(ctx->view,
 						ctx->mail_ctx.seq);
 		}
 		return modseq >= arg->value.modseq->modseq;