dovecot-2.1: imapc: Fixed reopening a mailbox.
dovecot at dovecot.org
dovecot at dovecot.org
Thu Oct 20 16:46:18 EEST 2011
details: http://hg.dovecot.org/dovecot-2.1/rev/221ec0404d8e
changeset: 13639:221ec0404d8e
user: Timo Sirainen <tss at iki.fi>
date: Thu Oct 20 16:54:36 2011 +0300
description:
imapc: Fixed reopening a mailbox.
diffstat:
src/lib-imap-client/imapc-client.c | 2 +-
src/lib-imap-client/imapc-connection.c | 25 +++++++++++--------------
src/lib-imap-client/imapc-connection.h | 3 ++-
3 files changed, 14 insertions(+), 16 deletions(-)
diffs (95 lines):
diff -r 809944f5015a -r 221ec0404d8e src/lib-imap-client/imapc-client.c
--- a/src/lib-imap-client/imapc-client.c Wed Oct 19 16:11:44 2011 +0300
+++ b/src/lib-imap-client/imapc-client.c Thu Oct 20 16:54:36 2011 +0300
@@ -266,7 +266,7 @@
/* reopen the mailbox */
box->reopen_callback(box->reopen_context);
} else {
- imapc_connection_abort_commands(box->conn);
+ imapc_connection_abort_commands(box->conn, TRUE, FALSE);
}
}
diff -r 809944f5015a -r 221ec0404d8e src/lib-imap-client/imapc-connection.c
--- a/src/lib-imap-client/imapc-connection.c Wed Oct 19 16:11:44 2011 +0300
+++ b/src/lib-imap-client/imapc-connection.c Thu Oct 20 16:54:36 2011 +0300
@@ -233,21 +233,23 @@
}
}
-static void
-imapc_connection_abort_commands_full(struct imapc_connection *conn,
- bool keep_retriable)
+void imapc_connection_abort_commands(struct imapc_connection *conn,
+ bool disconnected, bool keep_retriable)
{
struct imapc_command *const *cmdp, *cmd;
ARRAY_TYPE(imapc_command) tmp_array;
struct imapc_command_reply reply;
t_array_init(&tmp_array, 8);
- imapc_connection_abort_commands_array(&conn->cmd_wait_list,
- &tmp_array, keep_retriable);
+ if (disconnected) {
+ imapc_connection_abort_commands_array(&conn->cmd_wait_list,
+ &tmp_array,
+ keep_retriable);
+ }
imapc_connection_abort_commands_array(&conn->cmd_send_queue,
&tmp_array, keep_retriable);
- if (array_count(&conn->cmd_wait_list) > 0) {
+ if (array_count(&conn->cmd_wait_list) > 0 && disconnected) {
/* need to move all the waiting commands to send queue */
array_append_array(&conn->cmd_wait_list,
&conn->cmd_send_queue);
@@ -271,11 +273,6 @@
}
}
-void imapc_connection_abort_commands(struct imapc_connection *conn)
-{
- imapc_connection_abort_commands_full(conn, FALSE);
-}
-
static void
imapc_login_callback(struct imapc_connection *conn,
const struct imapc_command_reply *reply)
@@ -368,13 +365,13 @@
net_disconnect(conn->fd);
conn->fd = -1;
- imapc_connection_abort_commands_full(conn, reconnecting);
+ imapc_connection_abort_commands(conn, TRUE, reconnecting);
imapc_connection_set_state(conn, IMAPC_CONNECTION_STATE_DISCONNECTED);
}
static void imapc_connection_set_disconnected(struct imapc_connection *conn)
{
- imapc_connection_abort_commands(conn);
+ imapc_connection_abort_commands(conn, TRUE, FALSE);
imapc_connection_set_state(conn, IMAPC_CONNECTION_STATE_DISCONNECTED);
}
@@ -1808,7 +1805,7 @@
struct imapc_connection *conn = box->conn;
imapc_connection_send_idle_done(conn);
- imapc_connection_abort_commands(conn);
+ imapc_connection_abort_commands(conn, FALSE, FALSE);
if (conn->selected_box != NULL || conn->selecting_box != NULL) {
i_assert(conn->selected_box == box ||
diff -r 809944f5015a -r 221ec0404d8e src/lib-imap-client/imapc-connection.h
--- a/src/lib-imap-client/imapc-connection.h Wed Oct 19 16:11:44 2011 +0300
+++ b/src/lib-imap-client/imapc-connection.h Thu Oct 20 16:54:36 2011 +0300
@@ -25,7 +25,8 @@
imapc_command_callback_t *login_callback,
void *login_context);
void imapc_connection_disconnect(struct imapc_connection *conn);
-void imapc_connection_abort_commands(struct imapc_connection *conn);
+void imapc_connection_abort_commands(struct imapc_connection *conn,
+ bool disconnected, bool keep_retriable);
void imapc_connection_ioloop_changed(struct imapc_connection *conn);
void imapc_connection_input_pending(struct imapc_connection *conn);
More information about the dovecot-cvs
mailing list