From ebc8244c9edae196004a53059e737f518582fa08 Mon Sep 17 00:00:00 2001 From: Ailin Nemui Date: Mon, 13 Dec 2021 15:32:30 +0100 Subject: [PATCH] keep own ops status on /upgrade --- 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);