diff options
Diffstat (limited to 'src/irc/core/massjoin.c')
-rw-r--r-- | src/irc/core/massjoin.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/irc/core/massjoin.c b/src/irc/core/massjoin.c index 71a46edc..563ec02b 100644 --- a/src/irc/core/massjoin.c +++ b/src/irc/core/massjoin.c @@ -56,6 +56,14 @@ static void event_join(IRC_SERVER_REC *server, const char *data, g_free(params); if (chanrec == NULL) return; + /* check that the nick isn't already in nicklist. seems to happen + sometimes (server desyncs or something?) */ + nickrec = nicklist_find(CHANNEL(chanrec), nick); + if (nickrec != NULL) { + /* destroy the old record */ + nicklist_remove(CHANNEL(chanrec), nickrec); + } + /* add user to nicklist */ nickrec = irc_nicklist_insert(chanrec, nick, FALSE, FALSE, FALSE, TRUE); nicklist_set_host(CHANNEL(chanrec), nickrec, address); |