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);
 	}
 }