dovecot-2.2: imap: Fixed hanging if a pipelined IMAP command was...

dovecot at dovecot.org dovecot at dovecot.org
Tue Nov 24 09:50:23 UTC 2015


details:   http://hg.dovecot.org/dovecot-2.2/rev/26c565042d9d
changeset: 19412:26c565042d9d
user:      Timo Sirainen <tss at iki.fi>
date:      Tue Nov 24 11:50:15 2015 +0200
description:
imap: Fixed hanging if a pipelined IMAP command was waiting for previous command to sync.
..And the previous command was waiting for the next command to finish before
it would start syncing. For example FETCH+LOGOUT pipelined.

diffstat:

 src/imap/imap-client.c |  8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diffs (19 lines):

diff -r 0e05efd14b39 -r 26c565042d9d src/imap/imap-client.c
--- a/src/imap/imap-client.c	Tue Nov 24 11:15:47 2015 +0200
+++ b/src/imap/imap-client.c	Tue Nov 24 11:50:15 2015 +0200
@@ -1016,8 +1016,14 @@
 	if (!handled_commands)
 		return FALSE;
 
-	if (client->input_lock == NULL)
+	if (client->input_lock == NULL) {
+		/* finished handling all commands. sync them all at once now. */
 		cmd_sync_delayed(client);
+	} else if (client->input_lock->state == CLIENT_COMMAND_STATE_WAIT_UNAMBIGUITY) {
+		/* the command may be waiting for previous command to sync. */
+		if (cmd_sync_delayed(client))
+			client_continue_pending_input(client);
+	}
 	return TRUE;
 }
 


More information about the dovecot-cvs mailing list