From: Timo Sirainen Date: Fri, 13 Jun 2008 10:10:06 +0000 (+0300) Subject: APPEND: Uncork stream only after syncing and sending tagged reply. X-Git-Tag: 1.2.alpha1~291 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bda73a03c1d47689f9dbbab7cdaa862ae9a2337b;p=thirdparty%2Fdovecot%2Fcore.git APPEND: Uncork stream only after syncing and sending tagged reply. --HG-- branch : HEAD --- diff --git a/src/imap/cmd-append.c b/src/imap/cmd-append.c index 003b7690ca..cd1bd0826c 100644 --- a/src/imap/cmd-append.c +++ b/src/imap/cmd-append.c @@ -38,6 +38,7 @@ static void client_input_append(struct client_command_context *cmd) { 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 @@ static void client_input_append(struct client_command_context *cmd) 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