From: Timo Sirainen Date: Thu, 14 May 2009 21:20:51 +0000 (-0400) Subject: imap: When multiple commands are pipelined, try harder to combine their mailbox synci... X-Git-Tag: 2.0.alpha1~773 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=89c67f96f30ec0663c41e5efe244b924075c9577;p=thirdparty%2Fdovecot%2Fcore.git imap: When multiple commands are pipelined, try harder to combine their mailbox syncing together. --HG-- branch : HEAD --- diff --git a/src/imap/imap-client.c b/src/imap/imap-client.c index 14923e9a6e..f81470144c 100644 --- a/src/imap/imap-client.c +++ b/src/imap/imap-client.c @@ -402,7 +402,8 @@ client_command_find_with_flags(struct client_command_context *new_cmd, cmd = new_cmd->client->command_queue; for (; cmd != NULL; cmd = cmd->next) { - if (cmd != new_cmd && (cmd->cmd_flags & flags) != 0) + if (cmd->state < CLIENT_COMMAND_STATE_WAIT_SYNC && + cmd != new_cmd && (cmd->cmd_flags & flags) != 0) return cmd; } return NULL; @@ -745,7 +746,8 @@ bool client_handle_input(struct client *client) if (!handled_commands) return FALSE; - ret = cmd_sync_delayed(client); + ret = client->input_lock != NULL ? TRUE : + cmd_sync_delayed(client); if (ret) client_continue_pending_input(&client); return TRUE;