From dbf9fc3dfcc1752003f7e167261b917d5b94aaf2 Mon Sep 17 00:00:00 2001 From: ailin-nemui Date: Fri, 17 Dec 2021 22:29:15 +0100 Subject: [PATCH] Merge pull request #53 from ailin-nemui/keepops keep own ops status on /upgrade (cherry picked from commit a2feef5e735d3bb3d5a4eecb05e813ba6bd2fe95) --- src/irc/core/massjoin.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/irc/core/massjoin.c b/src/irc/core/massjoin.c index b8b8912f..15a9a9a8 100644 --- a/src/irc/core/massjoin.c +++ b/src/irc/core/massjoin.c @@ -43,13 +43,6 @@ static void event_join(IRC_SERVER_REC *server, const char *data, g_return_if_fail(data != NULL); - if (g_ascii_strcasecmp(nick, server->nick) == 0) { - /* You joined, do not massjoin */ - send_massjoin = FALSE; - } else { - send_massjoin = TRUE; - } - params = event_get_params(data, 3, &channel, &account, &realname); ptr = strchr(channel, 7); /* ^G does something weird.. */ @@ -62,6 +55,19 @@ static void event_join(IRC_SERVER_REC *server, const char *data, return; } + if (g_ascii_strcasecmp(nick, server->nick) == 0) { + /* do not overwrite our /UPGRADEd ownnick */ + if (chanrec->session_rejoin) { + g_free(params); + return; + } else { + /* You joined, do not massjoin */ + send_massjoin = FALSE; + } + } else { + send_massjoin = TRUE; + } + /* check that the nick isn't already in nicklist. seems to happen sometimes (server desyncs or something?) */ nickrec = nicklist_find(CHANNEL(chanrec), nick);