Mercurial > dovecot > core-2.2
changeset 12788:6c4a2ca946f3
imapc: When unselecting a mailbox, send DONE to stop IDLE.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Thu, 10 Mar 2011 18:44:20 +0200 |
parents | 598bc0b91855 |
children | 3984231cd873 |
files | src/lib-storage/index/imapc/imapc-connection.c |
diffstat | 1 files changed, 9 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/imapc/imapc-connection.c Thu Mar 10 18:44:00 2011 +0200 +++ b/src/lib-storage/index/imapc/imapc-connection.c Thu Mar 10 18:44:20 2011 +0200 @@ -1339,13 +1339,18 @@ imapc_connection_disconnect(conn); } -static void imapc_command_send(struct imapc_connection *conn, - struct imapc_command *cmd) +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_send_str(conn->output, "DONE\r\n"); } +} + +static void imapc_command_send(struct imapc_connection *conn, + struct imapc_command *cmd) +{ + imapc_connection_send_idle_done(conn); switch (conn->state) { case IMAPC_CONNECTION_STATE_AUTHENTICATING: array_insert(&conn->cmd_send_queue, 0, &cmd, 1); @@ -1547,6 +1552,8 @@ reply.state = IMAPC_COMMAND_STATE_DISCONNECTED; reply.text_without_resp = reply.text_full = "Closing mailbox"; + imapc_connection_send_idle_done(box->conn); + array_foreach(&box->conn->cmd_wait_list, cmdp) { if ((*cmdp)->callback != NULL) { (*cmdp)->callback(&reply, (*cmdp)->context);