summaryrefslogtreecommitdiff
path: root/src/irc/core/channel-events.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/irc/core/channel-events.c')
-rw-r--r--src/irc/core/channel-events.c11
1 files changed, 11 insertions, 0 deletions
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);