From: Timo Sirainen Date: Sun, 17 Nov 2013 12:04:22 +0000 (+0200) Subject: lib-imap-client: Make sure command timeout is used also for IDLE DONE. X-Git-Tag: 2.2.8~17 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2bcc41a0005a43f15dcf0fb4ef21a1d1e4737f34;p=thirdparty%2Fdovecot%2Fcore.git lib-imap-client: Make sure command timeout is used also for IDLE DONE. --- diff --git a/src/lib-imap-client/imapc-connection.c b/src/lib-imap-client/imapc-connection.c index 2c4af2603a..e2eff435b2 100644 --- a/src/lib-imap-client/imapc-connection.c +++ b/src/lib-imap-client/imapc-connection.c @@ -953,7 +953,7 @@ static int imapc_connection_input_plus(struct imapc_connection *conn) conn->idle_plus_waiting = FALSE; conn->idling = TRUE; /* no timeouting while IDLEing */ - if (conn->to != NULL) + if (conn->to != NULL && !conn->idle_stopping) timeout_remove(&conn->to); } else if (cmds_count > 0 && cmds[0]->wait_for_literal) { /* reply for literal */ @@ -1701,6 +1701,10 @@ static void imapc_connection_send_idle_done(struct imapc_connection *conn) if ((conn->idling || conn->idle_plus_waiting) && !conn->idle_stopping) { conn->idle_stopping = TRUE; o_stream_nsend_str(conn->output, "DONE\r\n"); + if (conn->to == NULL) { + conn->to = timeout_add(conn->client->set.cmd_timeout_msecs, + imapc_command_timeout, conn); + } } }