summaryrefslogtreecommitdiff
path: root/modules/nickserv/ns_set_keepmodes.cpp
diff options
context:
space:
mode:
authorSadie Powell <sadie@witchery.services>2025-01-13 15:35:13 +0000
committerSadie Powell <sadie@witchery.services>2025-01-13 15:35:13 +0000
commit9d165f13e790ca03fc0352b3cfcf493e6fdd78c6 (patch)
tree1eccf5e976363eed5b21039ad177c10b319c7afd /modules/nickserv/ns_set_keepmodes.cpp
parent3582bc0f584fa9afb20988e7938085557fdebb75 (diff)
Allow skipping user modes in keepmodes.
Diffstat (limited to 'modules/nickserv/ns_set_keepmodes.cpp')
-rw-r--r--modules/nickserv/ns_set_keepmodes.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/modules/nickserv/ns_set_keepmodes.cpp b/modules/nickserv/ns_set_keepmodes.cpp
index f282d403a..34ba3f7e9 100644
--- a/modules/nickserv/ns_set_keepmodes.cpp
+++ b/modules/nickserv/ns_set_keepmodes.cpp
@@ -191,13 +191,13 @@ public:
{
if (keep_modes.HasExt(u->Account()))
{
+ const auto norestore = Config->GetModule(this)->Get<const Anope::string>("norestore");
User::ModeList modes = u->Account()->last_modes;
for (const auto &[last_mode, last_value] : modes)
{
- UserMode *um = ModeManager::FindUserModeByName(last_mode);
- /* if the null user can set the mode, then it's probably safe */
- if (um && um->CanSet(NULL))
- u->SetMode(NULL, last_mode, last_value);
+ auto *um = ModeManager::FindUserModeByName(last_mode);
+ if (um && um->CanSet(nullptr) && norestore.find(um->mchar) == Anope::string::npos)
+ u->SetMode(nullptr, last_mode, last_value);
}
}
}