diff options
author | Steffen Jaeckel <jaeckel-floss@eyet-services.de> | 2023-05-10 15:07:07 +0200 |
---|---|---|
committer | Steffen Jaeckel <jaeckel-floss@eyet-services.de> | 2023-05-10 18:12:11 +0200 |
commit | 8cd53acfd7450b4c1d22c956021af28135c38240 (patch) | |
tree | bfb34be7ba566b6fd30d67bd181312978c0987cd | |
parent | 08d68d329bac4417a8c7a9c44d7398e460fc0751 (diff) | |
download | profani-tty-8cd53acfd7450b4c1d22c956021af28135c38240.tar.gz |
fix `/reconnect now`
This fixes #1846 Issue introduced by a0aa26b6fa65ba625f4a6d3495a345c7120ff16d Signed-off-by: Steffen Jaeckel <jaeckel-floss@eyet-services.de>
-rw-r--r-- | src/command/cmd_funcs.c | 3 | ||||
-rw-r--r-- | src/event/client_events.c | 13 | ||||
-rw-r--r-- | src/event/client_events.h | 1 | ||||
-rw-r--r-- | src/xmpp/connection.h | 1 | ||||
-rw-r--r-- | src/xmpp/session.h | 1 | ||||
-rw-r--r-- | src/xmpp/xmpp.h | 2 | ||||
-rw-r--r-- | tests/unittests/xmpp/stub_xmpp.c | 4 |
7 files changed, 22 insertions, 3 deletions
diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c index 6e9ca259..7f44c116 100644 --- a/src/command/cmd_funcs.c +++ b/src/command/cmd_funcs.c @@ -6575,7 +6575,8 @@ cmd_reconnect(ProfWin* window, const char* const command, gchar** args) int intval = 0; char* err_msg = NULL; if (g_strcmp0(value, "now") == 0) { - session_reconnect_now(); + cons_show("Reconnecting now."); + cl_ev_reconnect(); } else if (strtoi_range(value, &intval, 0, INT_MAX, &err_msg)) { prefs_set_reconnect(intval); if (intval == 0) { diff --git a/src/event/client_events.c b/src/event/client_events.c index 4dcda4f3..c393ccd4 100644 --- a/src/event/client_events.c +++ b/src/event/client_events.c @@ -47,6 +47,7 @@ #include "plugins/plugins.h" #include "ui/window_list.h" #include "xmpp/chat_session.h" +#include "xmpp/session.h" #include "xmpp/xmpp.h" #ifdef HAVE_LIBOTR @@ -95,6 +96,18 @@ cl_ev_disconnect(void) } void +cl_ev_reconnect(void) +{ + if (connection_get_status() != JABBER_DISCONNECTED) { + connection_disconnect(); + ev_disconnect_cleanup(); + // on intentional disconnect reset the counter + ev_reset_connection_counter(); + } + session_reconnect_now(); +} + +void cl_ev_presence_send(const resource_presence_t presence_type, const int idle_secs) { char* signed_status = NULL; diff --git a/src/event/client_events.h b/src/event/client_events.h index fed2bb37..a35e97b5 100644 --- a/src/event/client_events.h +++ b/src/event/client_events.h @@ -42,6 +42,7 @@ jabber_conn_status_t cl_ev_connect_jid(const char* const jid, const char* const jabber_conn_status_t cl_ev_connect_account(ProfAccount* account); void cl_ev_disconnect(void); +void cl_ev_reconnect(void); void cl_ev_presence_send(const resource_presence_t presence_type, const int idle_secs); diff --git a/src/xmpp/connection.h b/src/xmpp/connection.h index 79bee1d4..d4ade03a 100644 --- a/src/xmpp/connection.h +++ b/src/xmpp/connection.h @@ -48,7 +48,6 @@ jabber_conn_status_t connection_connect(const char* const fulljid, const char* c const char* const tls_policy, const char* const auth_policy); jabber_conn_status_t connection_register(const char* const altdomain, int port, const char* const tls_policy, const char* const username, const char* const password); -void connection_disconnect(void); void connection_set_disconnected(void); void connection_set_priority(const int priority); diff --git a/src/xmpp/session.h b/src/xmpp/session.h index e6facb93..d8565fa4 100644 --- a/src/xmpp/session.h +++ b/src/xmpp/session.h @@ -47,6 +47,5 @@ void session_init_activity(void); void session_check_autoaway(void); void session_reconnect(gchar* altdomain, unsigned short altport); -void session_reconnect_now(void); #endif diff --git a/src/xmpp/xmpp.h b/src/xmpp/xmpp.h index 539126cd..2babe536 100644 --- a/src/xmpp/xmpp.h +++ b/src/xmpp/xmpp.h @@ -186,7 +186,9 @@ void session_disconnect(void); void session_shutdown(void); void session_process_events(void); char* session_get_account_name(void); +void session_reconnect_now(void); +void connection_disconnect(void); jabber_conn_status_t connection_get_status(void); char* connection_get_presence_msg(void); void connection_set_presence_msg(const char* const message); diff --git a/tests/unittests/xmpp/stub_xmpp.c b/tests/unittests/xmpp/stub_xmpp.c index a7dc9ebf..ffa7565d 100644 --- a/tests/unittests/xmpp/stub_xmpp.c +++ b/tests/unittests/xmpp/stub_xmpp.c @@ -54,6 +54,10 @@ void session_process_events(void) { } +void +connection_disconnect(void) +{ +} const char* connection_get_fulljid(void) { |