From a0aa26b6fa65ba625f4a6d3495a345c7120ff16d Mon Sep 17 00:00:00 2001 From: Steffen Jaeckel Date: Tue, 27 Dec 2022 22:53:18 +0100 Subject: add `now` option to `/reconnect` command Signed-off-by: Steffen Jaeckel --- src/command/cmd_defs.c | 8 +++++--- src/command/cmd_funcs.c | 14 ++++++++------ src/xmpp/session.c | 10 ++++------ src/xmpp/session.h | 1 + tests/unittests/xmpp/stub_xmpp.c | 4 ++++ 5 files changed, 22 insertions(+), 15 deletions(-) diff --git a/src/command/cmd_defs.c b/src/command/cmd_defs.c index 6b494e1a..fb37341d 100644 --- a/src/command/cmd_defs.c +++ b/src/command/cmd_defs.c @@ -1936,11 +1936,13 @@ static const struct cmd_t command_defs[] = { CMD_TAGS( CMD_TAG_CONNECTION) CMD_SYN( - "/reconnect ") + "/reconnect ", + "/reconnect now") CMD_DESC( - "Set the reconnect attempt interval for when the connection is lost.") + "Set the reconnect attempt interval for when the connection is lost or immediately trigger a reconnect.") CMD_ARGS( - { "", "Number of seconds before attempting to reconnect, a value of 0 disables reconnect." }) + { "", "Number of seconds before attempting to reconnect, a value of 0 disables reconnect." }, + { "now", "Immediately trigger a reconnect." }) }, { CMD_PREAMBLE("/autoping", diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c index a97240ff..bbfb3cb8 100644 --- a/src/command/cmd_funcs.c +++ b/src/command/cmd_funcs.c @@ -82,16 +82,17 @@ #include "plugins/plugins.h" #include "ui/ui.h" #include "ui/window_list.h" -#include "xmpp/xmpp.h" +#include "xmpp/avatar.h" +#include "xmpp/chat_session.h" #include "xmpp/connection.h" #include "xmpp/contact.h" -#include "xmpp/roster_list.h" #include "xmpp/jid.h" #include "xmpp/muc.h" -#include "xmpp/chat_session.h" -#include "xmpp/avatar.h" +#include "xmpp/roster_list.h" +#include "xmpp/session.h" #include "xmpp/stanza.h" #include "xmpp/vcard_funcs.h" +#include "xmpp/xmpp.h" #ifdef HAVE_LIBOTR #include "otr/otr.h" @@ -6539,8 +6540,9 @@ cmd_reconnect(ProfWin* window, const char* const command, gchar** args) int intval = 0; char* err_msg = NULL; - gboolean res = strtoi_range(value, &intval, 0, INT_MAX, &err_msg); - if (res) { + if (g_strcmp0(value, "now") == 0) { + session_reconnect_now(); + } else if (strtoi_range(value, &intval, 0, INT_MAX, &err_msg)) { prefs_set_reconnect(intval); if (intval == 0) { cons_show("Reconnect disabled.", intval); diff --git a/src/xmpp/session.c b/src/xmpp/session.c index 3bec1ab2..892cbbf2 100644 --- a/src/xmpp/session.c +++ b/src/xmpp/session.c @@ -96,8 +96,6 @@ static activity_state_t activity_state; static resource_presence_t saved_presence; static char* saved_status; -static void _session_reconnect(void); - static void _session_free_internals(void); static void _session_free_saved_details(void); @@ -268,12 +266,12 @@ session_process_events(void) if ((reconnect_sec != 0) && reconnect_timer) { int elapsed_sec = g_timer_elapsed(reconnect_timer, NULL); if (elapsed_sec > reconnect_sec) { - _session_reconnect(); + session_reconnect_now(); } } break; case JABBER_RECONNECT: - _session_reconnect(); + session_reconnect_now(); break; default: break; @@ -557,8 +555,8 @@ session_reconnect(gchar* altdomain, unsigned short altport) reconnect.altport = altport; } -static void -_session_reconnect(void) +void +session_reconnect_now(void) { // reconnect with account. ProfAccount* account = accounts_get_account(saved_account.name); diff --git a/src/xmpp/session.h b/src/xmpp/session.h index d8565fa4..e6facb93 100644 --- a/src/xmpp/session.h +++ b/src/xmpp/session.h @@ -47,5 +47,6 @@ 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/tests/unittests/xmpp/stub_xmpp.c b/tests/unittests/xmpp/stub_xmpp.c index f79aeb55..a7dc9ebf 100644 --- a/tests/unittests/xmpp/stub_xmpp.c +++ b/tests/unittests/xmpp/stub_xmpp.c @@ -38,6 +38,10 @@ session_connect_with_account(const ProfAccount* const account) return mock_type(jabber_conn_status_t); } +void +session_reconnect_now(void) +{ +} void session_disconnect(void) { -- cgit 1.4.1-2-gfad0