dovecot: Searching NOT sequence set with multiple search ranges ...
dovecot at dovecot.org
dovecot at dovecot.org
Sat Sep 22 14:28:28 EEST 2007
details: http://hg.dovecot.org/dovecot/rev/3645048f6f6e
changeset: 6457:3645048f6f6e
user: Timo Sirainen <tss at iki.fi>
date: Sat Sep 22 14:28:01 2007 +0300
description:
Searching NOT sequence set with multiple search ranges containing either
first or last sequence caused some messages to be skipped.
diffstat:
1 file changed, 10 insertions(+), 7 deletions(-)
src/lib-storage/index/index-search.c | 17 ++++++++++-------
diffs (27 lines):
diff -r ac87cdd44305 -r 3645048f6f6e src/lib-storage/index/index-search.c
--- a/src/lib-storage/index/index-search.c Sat Sep 22 14:13:42 2007 +0300
+++ b/src/lib-storage/index/index-search.c Sat Sep 22 14:28:01 2007 +0300
@@ -627,13 +627,16 @@ static void search_msgset_fix(const stru
min_seq = set->seq1;
if (set->seq2 > max_seq)
max_seq = set->seq2;
- }
-
- full_set.seq1 = min_seq;
- full_set.seq2 = max_seq;
- full_set.next = NULL;
- update_seqs(&full_set, hdr, seq1_r, seq2_r, not);
- return;
+ if (not)
+ update_seqs(set, hdr, seq1_r, seq2_r, TRUE);
+ }
+
+ if (!not) {
+ full_set.seq1 = min_seq;
+ full_set.seq2 = max_seq;
+ full_set.next = NULL;
+ update_seqs(&full_set, hdr, seq1_r, seq2_r, not);
+ }
}
static void search_or_parse_msgset_args(const struct mail_index_header *hdr,
More information about the dovecot-cvs
mailing list