# HG changeset patch # User Timo Sirainen # Date 1186058127 -10800 # Node ID e458f915009ed7afe66f8cd2b6f789077a513238 # Parent e18086698ebfa4f52c777bb16f8e95c5c8e250ce Last messageset changes broke FETCH *. 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 @@ 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";