summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/chatnets.c2
-rw-r--r--src/irc/core/channel-events.c11
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);