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.");
 }