Mercurial > dovecot > original-hg > dovecot-1.2
diff src/imap/cmd-thread.c @ 7639:03146f02403f HEAD
Implemented SEARCHRES extension.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 16 Mar 2008 11:05:53 +0200 |
parents | 7ed926ed7aa4 |
children | 077bb84e9e77 |
line wrap: on
line diff
--- a/src/imap/cmd-thread.c Sun Mar 16 11:04:58 2008 +0200 +++ b/src/imap/cmd-thread.c Sun Mar 16 11:05:53 2008 +0200 @@ -12,9 +12,8 @@ enum mail_thread_type threading; struct mail_search_arg *sargs; const struct imap_arg *args; - int args_count; - pool_t pool; - const char *error, *charset, *str; + int ret, args_count; + const char *charset, *str; args_count = imap_parser_read_args(cmd->parser, 0, 0, &args); if (args_count == -2) @@ -58,22 +57,17 @@ charset = IMAP_ARG_STR(args); args++; - pool = pool_alloconly_create("mail_search_args", 2048); + ret = imap_search_args_build(cmd, args, &sargs); + if (ret <= 0) + return ret < 0; - sargs = imap_search_args_build(pool, client->mailbox, args, &error); - if (sargs == NULL) { - /* error in search arguments */ - client_send_tagline(cmd, t_strconcat("NO ", error, NULL)); - } else if (imap_thread(cmd, charset, sargs, threading) == 0) { - pool_unref(&pool); - return cmd_sync(cmd, MAILBOX_SYNC_FLAG_FAST | - (cmd->uid ? 0 : MAILBOX_SYNC_FLAG_NO_EXPUNGES), - 0, "OK Thread completed."); - } else { + if (imap_thread(cmd, charset, sargs, threading) < 0) { client_send_storage_error(cmd, mailbox_get_storage(client->mailbox)); + return TRUE; } - pool_unref(&pool); - return TRUE; + return cmd_sync(cmd, MAILBOX_SYNC_FLAG_FAST | + (cmd->uid ? 0 : MAILBOX_SYNC_FLAG_NO_EXPUNGES), + 0, "OK Thread completed."); }