aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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);
}
};