changeset 14275:5a62b55914c4

imap: Fixed error handling in APPEND parameters.
author Timo Sirainen <tss@iki.fi>
date Sun, 04 Mar 2012 12:50:02 +0200
parents 509206065d33
children 9c6eeeb810c0
files src/imap/cmd-append.c
diffstat 1 files changed, 9 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/imap/cmd-append.c	Sun Mar 04 12:31:26 2012 +0200
+++ b/src/imap/cmd-append.c	Sun Mar 04 12:50:02 2012 +0200
@@ -227,11 +227,11 @@
 	enum mail_flags flags;
 	const char *const *keywords_list;
 	struct mail_keywords *keywords;
-	const char *internal_date_str;
+	const char *internal_date_str, *msg;
 	time_t internal_date;
 	int ret, timezone_offset;
 	unsigned int save_count;
-	bool nonsync;
+	bool nonsync, fatal;
 
 	if (cmd->cancel) {
 		cmd_append_finish(ctx);
@@ -245,8 +245,13 @@
 	ret = imap_parser_read_args(ctx->save_parser, 0,
 				    IMAP_PARSE_FLAG_LITERAL_SIZE, &args);
 	if (ret == -1) {
-		if (!ctx->failed)
-			client_send_command_error(cmd, NULL);
+		if (!ctx->failed) {
+			msg = imap_parser_get_error(ctx->save_parser, &fatal);
+			if (fatal)
+				client_disconnect_with_error(client, msg);
+			else
+				client_send_command_error(cmd, msg);
+		}
 		cmd_append_finish(ctx);
 		return TRUE;
 	}