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