diff options
-rw-r--r-- | src/core/chatnets.c | 2 | ||||
-rw-r--r-- | src/irc/core/channel-events.c | 11 |
2 files changed, 12 insertions, 1 deletions
diff --git a/src/core/chatnets.c b/src/core/chatnets.c index a2cff529..705dd2e7 100644 --- a/src/core/chatnets.c +++ b/src/core/chatnets.c @@ -186,7 +186,7 @@ void chatnets_init(void) { chatnets = NULL; - signal_add("event connected", (SIGNAL_FUNC) sig_connected); + signal_add_first("event connected", (SIGNAL_FUNC) sig_connected); signal_add("setup reread", (SIGNAL_FUNC) read_chatnets); signal_add_first("irssi init read settings", (SIGNAL_FUNC) read_chatnets); } diff --git a/src/irc/core/channel-events.c b/src/irc/core/channel-events.c index 3e9d75e0..92ea4d59 100644 --- a/src/irc/core/channel-events.c +++ b/src/irc/core/channel-events.c @@ -21,6 +21,7 @@ #include "module.h" #include "signals.h" #include "misc.h" +#include "channels-setup.h" #include "irc.h" #include "irc-channels.h" @@ -288,6 +289,16 @@ static void event_invite(IRC_SERVER_REC *server, const char *data) g_return_if_fail(data != NULL); params = event_get_params(data, 2, NULL, &channel); + + if (irc_channel_find(server, channel) == NULL) { + /* check if we're supposed to autojoin this channel */ + CHANNEL_SETUP_REC *setup; + + setup = channel_setup_find(channel, server->connrec->chatnet); + if (setup != NULL && setup->autojoin) + server->channels_join(SERVER(server), channel, TRUE); + } + g_free_not_null(server->last_invite); server->last_invite = g_strdup(channel); g_free(params); |