From 78cd3898f5ca14a51ba1d98a746b3e1bc63d4fa5 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Wed, 7 Jun 2023 12:59:19 +0100 Subject: Only regenerate cloaks if a cloak of that type exists. This prevents unnecessary recloaking which may result in spam. --- src/modules/m_cloak.cpp | 10 ++++++++++ src/modules/m_cloak_account.cpp | 5 ++++- src/modules/m_cloak_nick.cpp | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) (limited to 'src/modules') diff --git a/src/modules/m_cloak.cpp b/src/modules/m_cloak.cpp index 6b4dddad3..4101029b7 100644 --- a/src/modules/m_cloak.cpp +++ b/src/modules/m_cloak.cpp @@ -136,6 +136,16 @@ public: return cloaks->empty() ? nullptr : cloaks; } + bool IsActiveCloak(const Cloak::Engine& engine) override + { + for (const auto& cloakmethod : cloakmethods) + { + if (cloakmethod->IsProvidedBy(engine)) + return true; + } + return false; + } + void ResetCloaks(LocalUser* user, bool resetdisplay) override { const std::string oldcloak = GetFrontCloak(user); diff --git a/src/modules/m_cloak_account.cpp b/src/modules/m_cloak_account.cpp index 76180fb3f..554e49c11 100644 --- a/src/modules/m_cloak_account.cpp +++ b/src/modules/m_cloak_account.cpp @@ -183,7 +183,10 @@ public: void OnAccountChange(User* user, const std::string& newaccount) override { LocalUser* luser = IS_LOCAL(user); - if (luser && cloakapi) + if (!luser || !cloakapi) + return; + + if (cloakapi->IsActiveCloak(accountcloak) || cloakapi->IsActiveCloak(accountidcloak)) cloakapi->ResetCloaks(luser, true); } }; diff --git a/src/modules/m_cloak_nick.cpp b/src/modules/m_cloak_nick.cpp index c3a0a22a0..0028f67f0 100644 --- a/src/modules/m_cloak_nick.cpp +++ b/src/modules/m_cloak_nick.cpp @@ -135,7 +135,7 @@ public: void OnUserPostNick(User* user, const std::string& oldnick) override { LocalUser* luser = IS_LOCAL(user); - if (luser && cloakapi) + if (luser && cloakapi && cloakapi->IsActiveCloak(nickcloak)) cloakapi->ResetCloaks(luser, true); } }; -- cgit v1.3.1-10-gc9f91