summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/channel-rec.h1
-rw-r--r--src/core/channels.c3
-rw-r--r--src/irc/core/irc-session.c1
3 files changed, 5 insertions, 0 deletions
diff --git a/src/core/channel-rec.h b/src/core/channel-rec.h
index 2ff6a536..f3ec5f8d 100644
--- a/src/core/channel-rec.h
+++ b/src/core/channel-rec.h
@@ -22,6 +22,7 @@ unsigned int synced:1; /* Channel synced - all queries done */
unsigned int joined:1; /* Have we even received JOIN event for this channel? */
unsigned int left:1; /* You just left the channel */
unsigned int kicked:1; /* You just got kicked */
+unsigned int session_rejoin:1; /* This channel was joined with /UPGRADE */
unsigned int destroying:1;
/* Return the information needed to call SERVER_REC->channels_join() for
diff --git a/src/core/channels.c b/src/core/channels.c
index 8dd63ab7..6add0b82 100644
--- a/src/core/channels.c
+++ b/src/core/channels.c
@@ -199,6 +199,9 @@ void channel_send_autocommands(CHANNEL_REC *channel)
g_return_if_fail(IS_CHANNEL(channel));
+ if (channel->session_rejoin)
+ return;
+
rec = channel_setup_find(channel->name, channel->server->connrec->chatnet);
if (rec == NULL || rec->autosendcmd == NULL || !*rec->autosendcmd)
return;
diff --git a/src/irc/core/irc-session.c b/src/irc/core/irc-session.c
index 03b774ec..b4589871 100644
--- a/src/irc/core/irc-session.c
+++ b/src/irc/core/irc-session.c
@@ -72,6 +72,7 @@ static void sig_connected(IRC_SERVER_REC *server)
for (tmp = server->channels; tmp != NULL; tmp = tmp->next) {
CHANNEL_REC *rec = tmp->data;
+ rec->session_rejoin = TRUE;
signal_emit("event join", 4, server, rec->name,
server->nick, server->userhost);
irc_send_cmdv(server, "TOPIC %s", rec->name);