diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c index eefe5a57..749771df 100644 --- a/src/command/cmd_funcs.c +++ b/src/command/cmd_funcs.c @@ -6467,7 +6467,6 @@ cmd_reconnect(ProfWin* window, const char* const command, gchar** args) int intval = 0; auto_char char* err_msg = NULL; if (g_strcmp0(value, "now") == 0) { - cons_show("Reconnecting now."); cl_ev_reconnect(); } else if (strtoi_range(value, &intval, 0, INT_MAX, &err_msg)) { prefs_set_reconnect(intval); diff --git a/src/event/client_events.c b/src/event/client_events.c index e8620234..bccedc97 100644 --- a/src/event/client_events.c +++ b/src/event/client_events.c @@ -98,7 +98,14 @@ cl_ev_disconnect(void) void cl_ev_reconnect(void) { - if (connection_get_status() != JABBER_DISCONNECTED) { + jabber_conn_status_t conn_status = connection_get_status(); + if (conn_status == JABBER_CONNECTING) { + cons_show_error("Reconnection aborted: Connection attempt is already in progress"); + return; + } + + cons_show("Reconnecting now."); + if (conn_status != JABBER_DISCONNECTED && conn_status != JABBER_DISCONNECTING) { connection_disconnect(); ev_disconnect_cleanup(); // on intentional disconnect reset the counter