diff options
author | Iwan Aucamp <iwan.aucamp@concurrent.systems> | 2017-10-07 01:45:02 +0200 |
---|---|---|
committer | TingPing <tingping@tingping.se> | 2017-10-10 21:06:21 -0400 |
commit | 8ddd5e37788dd49561bf8148844a02e2696131e0 (patch) | |
tree | 89bef7b6a9b4e5539018b608bf3b8c9e5bd9ecad /src | |
parent | 4188f26ab981324d91217277294f52e85192201e (diff) |
Add an option to disable rejoin on auto reconnect
This change adds an option `irc_reconnect_rejoin` (default ON) which when turned OFF will prevent hexchat from rejoining channels after an auto reconnect. hexchat/hexchat#2069
Diffstat (limited to 'src')
-rw-r--r-- | src/common/cfgfiles.c | 2 | ||||
-rw-r--r-- | src/common/hexchat.h | 1 | ||||
-rw-r--r-- | src/common/server.c | 19 |
3 files changed, 14 insertions, 8 deletions
diff --git a/src/common/cfgfiles.c b/src/common/cfgfiles.c index b90f5a69..fdee9f2c 100644 --- a/src/common/cfgfiles.c +++ b/src/common/cfgfiles.c @@ -496,6 +496,7 @@ const struct prefs vars[] = {"input_tray_priv", P_OFFINT (hex_input_tray_priv), TYPE_BOOL}, {"irc_auto_rejoin", P_OFFINT (hex_irc_auto_rejoin), TYPE_BOOL}, + {"irc_reconnect_rejoin", P_OFFINT (hex_irc_reconnect_rejoin), TYPE_BOOL}, {"irc_ban_type", P_OFFINT (hex_irc_ban_type), TYPE_INT}, {"irc_cap_server_time", P_OFFINT (hex_irc_cap_server_time), TYPE_BOOL}, {"irc_conf_mode", P_OFFINT (hex_irc_conf_mode), TYPE_BOOL}, @@ -777,6 +778,7 @@ load_default_config(void) prefs.hex_input_flash_priv = 1; prefs.hex_input_tray_hilight = 1; prefs.hex_input_tray_priv = 1; + prefs.hex_irc_reconnect_rejoin = 1; prefs.hex_irc_cap_server_time = 1; prefs.hex_irc_logging = 1; prefs.hex_irc_who_join = 1; /* Can kick with inordinate amount of channels, required for some of our features though, TODO: add cap like away check? */ diff --git a/src/common/hexchat.h b/src/common/hexchat.h index 38a3e830..8c4a6a41 100644 --- a/src/common/hexchat.h +++ b/src/common/hexchat.h @@ -170,6 +170,7 @@ struct hexchatprefs unsigned int hex_input_tray_hilight; unsigned int hex_input_tray_priv; unsigned int hex_irc_auto_rejoin; + unsigned int hex_irc_reconnect_rejoin; unsigned int hex_irc_conf_mode; unsigned int hex_irc_hidehost; unsigned int hex_irc_hide_nickchange; diff --git a/src/common/server.c b/src/common/server.c index c0fb36a6..df98ef17 100644 --- a/src/common/server.c +++ b/src/common/server.c @@ -681,22 +681,25 @@ static void auto_reconnect (server *serv, int send_quit, int err) { session *s; - GSList *list; int del; if (serv->server_session == NULL) return; - list = sess_list; - while (list) /* make sure auto rejoin can work */ + if (prefs.hex_irc_reconnect_rejoin) { - s = list->data; - if (s->type == SESS_CHANNEL && s->channel[0]) + GSList *list; + list = sess_list; + while (list) /* make sure auto rejoin can work */ { - strcpy (s->waitchannel, s->channel); - strcpy (s->willjoinchannel, s->channel); + s = list->data; + if (s->type == SESS_CHANNEL && s->channel[0]) + { + strcpy (s->waitchannel, s->channel); + strcpy (s->willjoinchannel, s->channel); + } + list = list->next; } - list = list->next; } if (serv->connected) |