changeset 4024:7d7b0f427d68 HEAD

If client disconnected or gave too long APPEND command line, we didn't properly deinitialize saving, which could have caused partially written mails with mbox, or files left lying in tmp/ with maildir.
author Timo Sirainen <timo.sirainen@movial.fi>
date Fri, 17 Feb 2006 14:28:53 +0200
parents b19ccbaa3802
children d4c02d132a32
files src/imap/cmd-append.c
diffstat 1 files changed, 4 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/imap/cmd-append.c	Thu Feb 16 17:23:00 2006 +0200
+++ b/src/imap/cmd-append.c	Fri Feb 17 14:28:53 2006 +0200
@@ -26,6 +26,7 @@
 	struct mail_save_context *save_ctx;
 };
 
+static void cmd_append_finish(struct cmd_append_context *ctx);
 static bool cmd_append_continue_message(struct client_command_context *cmd);
 
 static void client_input(void *context)
@@ -38,9 +39,11 @@
 	switch (i_stream_read(client->input)) {
 	case -1:
 		/* disconnected */
+		cmd_append_finish(cmd->context);
 		client_destroy(client);
 		return;
 	case -2:
+		cmd_append_finish(cmd->context);
 		if (client->command_pending) {
 			/* message data, this is handled internally by
 			   mailbox_save_continue() */
@@ -54,7 +57,7 @@
 
 		client_send_command_error(cmd, "Too long argument.");
 		_client_reset_command(client);
-		break;
+		return;
 	}
 
 	if (cmd->func(cmd)) {