summaryrefslogtreecommitdiff
path: root/src/irc
diff options
context:
space:
mode:
authorTimo Sirainen <cras@irssi.org>2002-03-12 20:51:03 +0000
committercras <cras@dbcabf3a-b0e7-0310-adc4-f8d773084564>2002-03-12 20:51:03 +0000
commit65e87c9861385cf8dc05c612e8b67edebea61284 (patch)
tree2ed50e4812793bd43ba7d924f7ec0142d2f136a5 /src/irc
parentd5564a0e01c3e843e79e01f80c6aad5e98a7101a (diff)
downloadirssi-65e87c9861385cf8dc05c612e8b67edebea61284.zip
fix to some broken "ircds"
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2589 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'src/irc')
-rw-r--r--src/irc/core/irc-servers.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/irc/core/irc-servers.c b/src/irc/core/irc-servers.c
index 1fc7faaa..11817188 100644
--- a/src/irc/core/irc-servers.c
+++ b/src/irc/core/irc-servers.c
@@ -507,6 +507,19 @@ static void event_server_info(IRC_SERVER_REC *server, const char *data)
g_free(params);
}
+static void event_motd(IRC_SERVER_REC *server, const char *data, const char *from)
+{
+ if (server->connected)
+ return;
+
+ /* Stupid broken piece of shit ircd didn't send us 001,
+ you'd think they could at least get that right??
+ But no, then I'll have to go and add these idiotic kludges
+ to make them work. Maybe I should instead get the users of these
+ servers to complain about it to their admins. */
+ event_connected(server, data, from);
+}
+
static void event_channels_formed(IRC_SERVER_REC *server, const char *data)
{
char *params, *channels;
@@ -564,6 +577,7 @@ void irc_servers_init(void)
signal_add_last("server quit", (SIGNAL_FUNC) sig_server_quit);
signal_add("event 001", (SIGNAL_FUNC) event_connected);
signal_add("event 004", (SIGNAL_FUNC) event_server_info);
+ signal_add("event 375", (SIGNAL_FUNC) event_motd);
signal_add("event 254", (SIGNAL_FUNC) event_channels_formed);
signal_add("event 465", (SIGNAL_FUNC) event_server_banned);
signal_add("event error", (SIGNAL_FUNC) event_error);
@@ -586,6 +600,7 @@ void irc_servers_deinit(void)
signal_remove("server quit", (SIGNAL_FUNC) sig_server_quit);
signal_remove("event 001", (SIGNAL_FUNC) event_connected);
signal_remove("event 004", (SIGNAL_FUNC) event_server_info);
+ signal_remove("event 375", (SIGNAL_FUNC) event_motd);
signal_remove("event 254", (SIGNAL_FUNC) event_channels_formed);
signal_remove("event 465", (SIGNAL_FUNC) event_server_banned);
signal_remove("event error", (SIGNAL_FUNC) event_error);