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