Mercurial > dovecot > original-hg > dovecot-1.2
changeset 7018:b83be2b6ac8f HEAD
If post-APPEND syncing sent a lot of data, connection could have hanged.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sat, 22 Dec 2007 01:19:11 +0200 |
parents | 80d3b8fcec09 |
children | 08a3ba5de497 |
files | src/imap/cmd-append.c |
diffstat | 1 files changed, 7 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/imap/cmd-append.c Sat Dec 22 00:21:09 2007 +0200 +++ b/src/imap/cmd-append.c Sat Dec 22 01:19:11 2007 +0200 @@ -39,6 +39,7 @@ { struct cmd_append_context *ctx = cmd->context; struct client *client = cmd->client; + bool finished; i_assert(!client->destroyed); @@ -73,10 +74,14 @@ } o_stream_cork(client->output); - if (cmd->func(cmd)) { - o_stream_uncork(client->output); + finished = cmd->func(cmd); + o_stream_uncork(client->output); + if (finished) { client_command_free(cmd); client_continue_pending_input(&client); + } else if (cmd->output_pending) { + /* syncing didn't send everything */ + o_stream_set_flush_pending(client->output, TRUE); } }