aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Sadie Powell2023-07-17 07:29:56 +0100
committerGravatar Sadie Powell2023-07-17 07:29:56 +0100
commit4a303da1d583ca8b66d4e7cd233cbe9ee996ee82 (patch)
tree2390bdbd08d4bc6755c45556d852478050f3079a /src
parentUse -Wdev when running CMake on GitHub Actions. (diff)
Fix cloaking users too early in cloak_user.
Diffstat (limited to 'src')
-rw-r--r--src/modules/m_cloak_user.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/modules/m_cloak_user.cpp b/src/modules/m_cloak_user.cpp
index d76b74a62..3204bec64 100644
--- a/src/modules/m_cloak_user.cpp
+++ b/src/modules/m_cloak_user.cpp
@@ -282,8 +282,8 @@ public:
void OnAccountChange(User* user, const std::string& newaccount) override
{
LocalUser* luser = IS_LOCAL(user);
- if (!luser || !cloakapi)
- return;
+ if (!luser || luser->quitting || !luser->IsFullyConnected() || !cloakapi)
+ return; // User is uncloakable.
if (cloakapi->IsActiveCloak(accountcloak) || cloakapi->IsActiveCloak(accountidcloak))
cloakapi->ResetCloaks(luser, true);
@@ -292,14 +292,20 @@ public:
void OnChangeRealUser(User* user, const std::string& newuser) override
{
LocalUser* luser = IS_LOCAL(user);
- if (luser && cloakapi && cloakapi->IsActiveCloak(usernamecloak))
+ if (!luser || luser->quitting || !luser->IsFullyConnected() || !cloakapi)
+ return; // User is uncloakable.
+
+ if (cloakapi->IsActiveCloak(usernamecloak))
cloakapi->ResetCloaks(luser, true);
}
void OnUserPostNick(User* user, const std::string& oldnick) override
{
LocalUser* luser = IS_LOCAL(user);
- if (luser && cloakapi && cloakapi->IsActiveCloak(nicknamecloak))
+ if (!luser || luser->quitting || !luser->IsFullyConnected() || !cloakapi)
+ return; // User is uncloakable.
+
+ if (cloakapi->IsActiveCloak(nicknamecloak))
cloakapi->ResetCloaks(luser, true);
}
};