summaryrefslogtreecommitdiff
path: root/src/irc/core/channel-events.c
diff options
context:
space:
mode:
authorTimo Sirainen <cras@irssi.org>2003-01-21 08:15:33 +0000
committercras <cras@dbcabf3a-b0e7-0310-adc4-f8d773084564>2003-01-21 08:15:33 +0000
commit8070bb670467511b558e5ccdd6adc448c2766fc8 (patch)
treebbf7c1b146e905529ca3a8780d1f675b887f2afb /src/irc/core/channel-events.c
parenteff24e706ea28b25976165399d43b651c971d63e (diff)
downloadirssi-8070bb670467511b558e5ccdd6adc448c2766fc8.zip
If JOIN is sent to channel you've already joined, assume a missing PART and
resync the channel (instead of just ignoring as before). Patch by dg. git-svn-id: http://svn.irssi.org/repos/irssi/trunk@3099 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'src/irc/core/channel-events.c')
-rw-r--r--src/irc/core/channel-events.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/irc/core/channel-events.c b/src/irc/core/channel-events.c
index 92784c1a..dc98be3e 100644
--- a/src/irc/core/channel-events.c
+++ b/src/irc/core/channel-events.c
@@ -253,12 +253,11 @@ static void event_join(IRC_SERVER_REC *server, const char *data, const char *nic
chanrec = irc_channel_find(server, channel);
if (chanrec != NULL && chanrec->joined) {
- /* already joined this channel - this check was added
- here because of broken irssi proxy :) */
- g_free(shortchan);
- g_free(params);
- return;
- }
+ /* already joined this channel - probably a broken proxy that
+ forgot to send PART between */
+ chanrec->left = TRUE;
+ channel_destroy(CHANNEL(chanrec));
+ chanrec = NULL; }
if (chanrec == NULL) {
/* look again, because of the channel name cut issues. */