# HG changeset patch # User Timo Sirainen # Date 1453658878 -7200 # Node ID d9905cfd13fd96aa35deb64f316ceeff0e7fe91d # Parent 0473b9d7e0fd83448f270ce91f79eea991e27790 imapc: If command times out, reconnect and retry if possible. diff -r 0473b9d7e0fd -r d9905cfd13fd src/lib-imap-client/imapc-connection.c --- a/src/lib-imap-client/imapc-connection.c Sun Jan 24 19:54:51 2016 +0200 +++ b/src/lib-imap-client/imapc-connection.c Sun Jan 24 20:07:58 2016 +0200 @@ -1789,13 +1789,26 @@ { struct imapc_command *const *cmds; unsigned int count; + string_t *str = t_str_new(128); + bool reconnect = imapc_connection_can_reconnect(conn); cmds = array_get(&conn->cmd_wait_list, &count); i_assert(count > 0); - i_error("imapc(%s): Command '%s' timed out, disconnecting", - conn->name, imapc_command_get_readable(cmds[0])); - imapc_connection_disconnect(conn); + str_printfa(str, "imapc(%s): Command '%s' timed out, ", + conn->name, imapc_command_get_readable(cmds[0])); + if (reconnect) + str_append(str, "reconnecting"); + else + str_append(str, "disconnecting"); + + if (reconnect) { + i_warning("%s", str_c(str)); + imapc_connection_reconnect(conn); + } else { + i_error("%s", str_c(str)); + imapc_connection_disconnect(conn); + } } static bool