diff options
| author | 2023-07-17 07:29:56 +0100 | |
|---|---|---|
| committer | 2023-07-17 07:29:56 +0100 | |
| commit | 4a303da1d583ca8b66d4e7cd233cbe9ee996ee82 (patch) | |
| tree | 2390bdbd08d4bc6755c45556d852478050f3079a /src | |
| parent | Use -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.cpp | 14 |
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); } }; |
