diff options
author | Sebastien Helleu <flashcode@flashtux.org> | 2004-12-27 16:22:39 +0000 |
---|---|---|
committer | Sebastien Helleu <flashcode@flashtux.org> | 2004-12-27 16:22:39 +0000 |
commit | f4f2ec3668624b8cf29b9dab734f9069d90a8fec (patch) | |
tree | 1559d5284d4d839044759bbafc7f5a4b60c62d55 /src/common | |
parent | 486e55be0255d22a2530068d2a684273003c944e (diff) | |
download | weechat-f4f2ec3668624b8cf29b9dab734f9069d90a8fec.zip |
auto-reconnection to server (new options: server_autoreconnect (on/off), server_autoreconnect_delay (in seconds)), disconnections are now managed without problem by WeeChat
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/command.c | 24 | ||||
-rw-r--r-- | src/common/weechat.c | 6 | ||||
-rw-r--r-- | src/common/weeconfig.c | 15 |
3 files changed, 30 insertions, 15 deletions
diff --git a/src/common/command.c b/src/common/command.c index 1c2af058c..6a5a1a663 100644 --- a/src/common/command.c +++ b/src/common/command.c @@ -1026,7 +1026,6 @@ int weechat_cmd_connect (int argc, char **argv) { t_irc_server *ptr_server; - t_irc_channel *ptr_channel; /* make gcc happy */ (void) argc; @@ -1048,13 +1047,9 @@ weechat_cmd_connect (int argc, char **argv) } if (server_connect (ptr_server)) { + ptr_server->reconnect_start = 0; + ptr_server->reconnect_join = (ptr_server->channels) ? 1 : 0; irc_login (ptr_server); - for (ptr_channel = ptr_server->channels; ptr_channel; - ptr_channel = ptr_channel->next_channel) - { - if (ptr_channel->type == CHAT_CHANNEL) - server_sendf (ptr_server, "JOIN %s\r\n", ptr_channel->name); - } } } else @@ -1082,14 +1077,17 @@ weechat_cmd_disconnect (int argc, char **argv) ptr_server = server_search (argv[0]); if (ptr_server) { - if (!ptr_server->is_connected) + if ((!ptr_server->is_connected) && (ptr_server->reconnect_start == 0)) { - gui_printf (NULL, + gui_printf (ptr_server->buffer, _("%s not connected to server \"%s\"!\n"), WEECHAT_ERROR, argv[0]); return -1; } - server_disconnect (ptr_server); + if (ptr_server->reconnect_start > 0) + gui_printf (ptr_server->buffer, + _("Auto-reconnection is cancelled\n")); + server_disconnect (ptr_server, 0); gui_draw_buffer_status (gui_current_window->buffer, 1); } else @@ -1603,8 +1601,10 @@ weechat_cmd_server (int argc, char **argv) } /* create new server */ - new_server = server_new (server.name, server.autoconnect, 0, - server.address, server.port, server.password, + new_server = server_new (server.name, server.autoconnect, + server.autoreconnect, + server.autoreconnect_delay, + 0, server.address, server.port, server.password, server.nick1, server.nick2, server.nick3, server.username, server.realname, server.command, 1, server.autojoin, 1); diff --git a/src/common/weechat.c b/src/common/weechat.c index c22d8201e..6d424a17a 100644 --- a/src/common/weechat.c +++ b/src/common/weechat.c @@ -228,8 +228,10 @@ wee_parse_args (int argc, char *argv[]) } else { - if (!server_new (server_tmp.name, 0, 1, - server_tmp.address, server_tmp.port, + if (!server_new (server_tmp.name, server_tmp.autoconnect, + server_tmp.autoreconnect, + server_tmp.autoreconnect_delay, + 1, server_tmp.address, server_tmp.port, server_tmp.password, server_tmp.nick1, server_tmp.nick2, server_tmp.nick3, NULL, NULL, NULL, 0, server_tmp.autojoin, 1)) diff --git a/src/common/weeconfig.c b/src/common/weeconfig.c index 7569b7079..e3c0ca190 100644 --- a/src/common/weeconfig.c +++ b/src/common/weeconfig.c @@ -534,6 +534,14 @@ t_config_option weechat_options_server[] = N_("automatically connect to server when WeeChat is starting"), OPTION_TYPE_BOOLEAN, BOOL_FALSE, BOOL_TRUE, BOOL_TRUE, NULL, NULL, &(cfg_server.autoconnect), NULL, NULL }, + { "server_autoreconnect", N_("automatically reconnect to server"), + N_("automatically reconnect to server when disconnected"), + OPTION_TYPE_BOOLEAN, BOOL_FALSE, BOOL_TRUE, BOOL_TRUE, + NULL, NULL, &(cfg_server.autoreconnect), NULL, NULL }, + { "server_autoreconnect_delay", N_("delay before trying again to reconnect"), + N_("delay (in deconds) before trying again to reconnect to server"), + OPTION_TYPE_INT, 0, 65535, 30, + NULL, NULL, &(cfg_server.autoreconnect_delay), NULL, NULL }, { "server_address", N_("server address or hostname"), N_("IP address or hostname of IRC server"), OPTION_TYPE_STRING, 0, 0, 0, @@ -815,7 +823,8 @@ config_allocate_server (char *filename, int line_number) return 0; } if (!server_new (cfg_server.name, - cfg_server.autoconnect, 0, cfg_server.address, cfg_server.port, + cfg_server.autoconnect, cfg_server.autoreconnect, + cfg_server.autoreconnect_delay, 0, cfg_server.address, cfg_server.port, cfg_server.password, cfg_server.nick1, cfg_server.nick2, cfg_server.nick3, cfg_server.username, cfg_server.realname, cfg_server.command, cfg_server.command_delay, cfg_server.autojoin, @@ -1374,6 +1383,10 @@ config_write (char *config_name) fprintf (file, "server_name=%s\n", ptr_server->name); fprintf (file, "server_autoconnect=%s\n", (ptr_server->autoconnect) ? "on" : "off"); + fprintf (file, "server_autoreconnect=%s\n", + (ptr_server->autoreconnect) ? "on" : "off"); + fprintf (file, "server_autoreconnect_delay=%d\n", + ptr_server->autoreconnect_delay); fprintf (file, "server_address=%s\n", ptr_server->address); fprintf (file, "server_port=%d\n", ptr_server->port); fprintf (file, "server_password=%s\n", |