Mercurial > dovecot > original-hg > dovecot-1.2
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;