dovecot: Last messageset changes broke FETCH *.

dovecot at dovecot.org dovecot at dovecot.org
Thu Aug 2 15:35:34 EEST 2007


details:   http://hg.dovecot.org/dovecot/rev/e458f915009e
changeset: 6157:e458f915009e
user:      Timo Sirainen <tss at iki.fi>
date:      Thu Aug 02 15:35:27 2007 +0300
description:
Last messageset changes broke FETCH *.

diffstat:

1 file changed, 9 insertions(+), 2 deletions(-)
src/imap/imap-search.c |   11 +++++++++--

diffs (21 lines):

diff -r e18086698ebf -r e458f915009e src/imap/imap-search.c
--- a/src/imap/imap-search.c	Thu Aug 02 14:21:05 2007 +0300
+++ b/src/imap/imap-search.c	Thu Aug 02 15:35:27 2007 +0300
@@ -450,8 +450,15 @@ static int imap_search_get_msgset_arg(st
 	arg = p_new(cmd->pool, struct mail_search_arg, 1);
 	arg->type = SEARCH_SEQSET;
 	arg->value.seqset = imap_messageset_parse(cmd->pool, messageset);
-	if (arg->value.seqset == NULL ||
-	    arg->value.seqset->seq1 > cmd->client->messages_count ||
+	/* when there are no messages, all messagesets are invalid.
+	   if there's at least one message:
+	    - * gives seq1 = seq2 = (uint32_t)-1
+	    - n:* should work if n <= messages_count
+	    - n:m or m should work if m <= messages_count
+	*/
+	if (arg->value.seqset == NULL || cmd->client->messages_count == 0 ||
+	    (arg->value.seqset->seq1 > cmd->client->messages_count &&
+	     arg->value.seqset->seq1 != (uint32_t)-1) ||
 	    (arg->value.seqset->seq2 > cmd->client->messages_count &&
 	     arg->value.seqset->seq2 != (uint32_t)-1)) {
 		*error_r = "Invalid messageset";


More information about the dovecot-cvs mailing list