From d708ff35e61678f3b9f3c6db45fe51450092a86d Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Fri, 13 Jan 2017 20:39:42 +0200 Subject: [PATCH] imapc: Fix re-sending retryable commands after reconnect --- src/lib-imap-client/imapc-client.c | 2 +- src/lib-imap-client/imapc-connection.c | 4 ++-- src/lib-imap-client/imapc-connection.h | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/lib-imap-client/imapc-client.c b/src/lib-imap-client/imapc-client.c index 0d9de65c79..365341f596 100644 --- a/src/lib-imap-client/imapc-client.c +++ b/src/lib-imap-client/imapc-client.c @@ -328,7 +328,7 @@ void imapc_client_mailbox_reconnect(struct imapc_client_mailbox *box) loop. */ box->reconnect_ok = FALSE; - imapc_connection_disconnect(box->conn); + imapc_connection_disconnect_full(box->conn, TRUE); imapc_connection_connect(box->conn, imapc_client_reconnect_cb, box); } diff --git a/src/lib-imap-client/imapc-connection.c b/src/lib-imap-client/imapc-connection.c index 9d571b6392..6ba738968f 100644 --- a/src/lib-imap-client/imapc-connection.c +++ b/src/lib-imap-client/imapc-connection.c @@ -376,8 +376,8 @@ imapc_connection_literal_reset(struct imapc_connection_literal *literal) literal->fd = -1; } -static void imapc_connection_disconnect_full(struct imapc_connection *conn, - bool reconnecting) +void imapc_connection_disconnect_full(struct imapc_connection *conn, + bool reconnecting) { /* timeout may be set also in disconnected state */ if (conn->to != NULL) diff --git a/src/lib-imap-client/imapc-connection.h b/src/lib-imap-client/imapc-connection.h index b1e324e9d0..21ffd0af3d 100644 --- a/src/lib-imap-client/imapc-connection.h +++ b/src/lib-imap-client/imapc-connection.h @@ -33,6 +33,8 @@ void imapc_connection_connect(struct imapc_connection *conn, imapc_command_callback_t *login_callback, void *login_context) ATTR_NULL(2, 3); void imapc_connection_disconnect(struct imapc_connection *conn); +void imapc_connection_disconnect_full(struct imapc_connection *conn, + bool reconnecting); void imapc_connection_abort_commands(struct imapc_connection *conn, struct imapc_client_mailbox *only_box, bool keep_retriable) ATTR_NULL(2);