[dovecot-cvs] dovecot/src/lib-storage/index index-search.c, 1.103, 1.104

cras at dovecot.org cras at dovecot.org
Mon Jul 4 00:09:42 EEST 2005


Update of /var/lib/cvs/dovecot/src/lib-storage/index
In directory talvi:/tmp/cvs-serv9497/lib-storage/index

Modified Files:
	index-search.c 
Log Message:
Moved sequence set range checks to imap-specific code, so that SEARCH can
accept sequence sets with sequence being larger than number of messages in
mailbox.



Index: index-search.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-storage/index/index-search.c,v
retrieving revision 1.103
retrieving revision 1.104
diff -u -d -r1.103 -r1.104
--- index-search.c	23 Apr 2005 16:51:21 -0000	1.103
+++ index-search.c	3 Jul 2005 21:09:40 -0000	1.104
@@ -536,14 +536,21 @@
 			     uint32_t *seq1_r, uint32_t *seq2_r)
 {
 	for (; set != NULL; set = set->next) {
-		if (set->seq1 == (uint32_t)-1)
+		if (set->seq1 > hdr->messages_count) {
+			if (set->seq1 != (uint32_t)-1 &&
+			    set->seq2 != (uint32_t)-1) {
+				/* completely outside our range */
+				set->seq1 = set->seq2 = 0;
+				return 0;
+			}
+			/* either seq1 or seq2 is '*', so the last message is
+			   in range. */
 			set->seq1 = hdr->messages_count;
-		if (set->seq2 == (uint32_t)-1)
+		}
+		if (set->seq2 > hdr->messages_count)
 			set->seq2 = hdr->messages_count;
 
-		if (set->seq1 == 0 || set->seq2 == 0 ||
-		    set->seq1 > hdr->messages_count ||
-		    set->seq2 > hdr->messages_count) {
+		if (set->seq1 == 0 || set->seq2 == 0) {
 			mail_storage_set_syntax_error(ibox->box.storage,
 						      "Invalid messageset");
 			return -1;



More information about the dovecot-cvs mailing list