diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/core/channel-rec.h | 1 | ||||
-rw-r--r-- | src/core/channels.c | 3 | ||||
-rw-r--r-- | src/irc/core/irc-session.c | 1 |
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); |