1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-04 00:33:13 +02:00

relay/api: add automatic reconnection to remote (closes #2166)

New options:

- remote option "autoreconnect_delay"
- relay.api.remote_autoreconnect_delay_growing
- relay.api.remote_autoreconnect_delay_max
This commit is contained in:
Sébastien Helleu
2024-08-11 12:18:28 +02:00
parent fc6811341a
commit a317c785fb
26 changed files with 789 additions and 80 deletions
+19 -2
View File
@@ -439,6 +439,8 @@ relay_command_display_remote (struct t_relay_remote *remote, int with_detail)
weechat_printf (NULL, " autoconnect. . . . . : %s",
(weechat_config_string (remote->options[RELAY_REMOTE_OPTION_AUTOCONNECT])) ?
"on" : "off");
weechat_printf (NULL, " autoreconnect_delay. : %d",
weechat_config_integer (remote->options[RELAY_REMOTE_OPTION_AUTORECONNECT_DELAY]));
weechat_printf (NULL, " proxy. . . . . . . . : '%s'",
weechat_config_string (remote->options[RELAY_REMOTE_OPTION_PROXY]));
weechat_printf (NULL, " tls_verify . . . . . : %s",
@@ -474,7 +476,8 @@ relay_command_remote (const void *pointer, void *data,
{
struct t_relay_remote *ptr_remote, *ptr_remote2;
int i, detailed_list, one_remote_found, update;
const char *ptr_autoconnect, *ptr_proxy, *ptr_tls_verify, *ptr_password;
const char *ptr_autoconnect, *ptr_autoreconnect_delay, *ptr_proxy;
const char *ptr_tls_verify, *ptr_password;
const char *ptr_totp_secret;
char *remote_name;
@@ -601,6 +604,7 @@ relay_command_remote (const void *pointer, void *data,
return WEECHAT_RC_ERROR;
}
ptr_autoconnect = NULL;
ptr_autoreconnect_delay = NULL;
ptr_proxy = NULL;
ptr_tls_verify = NULL;
ptr_password = NULL;
@@ -611,6 +615,10 @@ relay_command_remote (const void *pointer, void *data,
{
ptr_autoconnect = argv[i] + 13;
}
else if (strncmp (argv[i], "-autoreconnect_delay=", 21) == 0)
{
ptr_autoreconnect_delay = argv[i] + 21;
}
else if (strncmp (argv[i], "-proxy=", 7) == 0)
{
ptr_proxy = argv[i] + 7;
@@ -638,7 +646,8 @@ relay_command_remote (const void *pointer, void *data,
}
}
ptr_remote = relay_remote_new (argv[2], argv[3], ptr_autoconnect,
ptr_proxy, ptr_tls_verify, ptr_password,
ptr_autoreconnect_delay, ptr_proxy,
ptr_tls_verify, ptr_password,
ptr_totp_secret);
if (ptr_remote)
{
@@ -744,6 +753,14 @@ relay_command_remote (const void *pointer, void *data,
return WEECHAT_RC_ERROR;
}
relay_remote_disconnect (ptr_remote);
if (ptr_remote->reconnect_start > 0)
{
ptr_remote->reconnect_delay = 0;
ptr_remote->reconnect_start = 0;
weechat_printf (NULL,
_("remote[%s]: auto-reconnection is cancelled"),
ptr_remote->name);
}
return WEECHAT_RC_OK;
}