changeset 7870:490fdb3c04de HEAD

APPEND: Uncork stream only after syncing and sending tagged reply.
author Timo Sirainen <tss@iki.fi>
date Fri, 13 Jun 2008 13:10:06 +0300
parents fe465f0f86fb
children 6718f97ed2c3
files src/imap/cmd-append.c
diffstat 1 files changed, 5 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/imap/cmd-append.c	Fri Jun 13 11:02:56 2008 +0300
+++ b/src/imap/cmd-append.c	Fri Jun 13 13:10:06 2008 +0300
@@ -38,6 +38,7 @@
 {
 	struct cmd_append_context *ctx = cmd->context;
 	struct client *client = cmd->client;
+	struct ostream *output = client->output;
 	bool finished;
 
 	i_assert(!client->destroyed);
@@ -73,15 +74,17 @@
 		return;
 	}
 
-	o_stream_cork(client->output);
+	o_stream_ref(output);
+	o_stream_cork(output);
 	finished = cmd->func(cmd);
-	o_stream_uncork(client->output);
 	if (!finished && cmd->state != CLIENT_COMMAND_STATE_DONE)
 		(void)client_handle_unfinished_cmd(cmd);
 	else
 		client_command_free(&cmd);
 	(void)cmd_sync_delayed(client);
 	client_continue_pending_input(&client);
+	o_stream_uncork(output);
+	o_stream_unref(&output);
 }
 
 /* Returns -1 = error, 0 = need more data, 1 = successful. flags and