From d8b04f5ea773340dc52d3728521c21829e0136ca Mon Sep 17 00:00:00 2001 From: w00t Date: Wed, 4 Feb 2009 12:50:19 +0000 Subject: [PATCH] Allow SANICK, SVSNICK, NICKLOCK, etc to override +bN N:. Fixes bug #607 and #644, reported by SnoFox and others. Based on patch by Phoenix in bug #702. Thanks! git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11029 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/modules/m_nonicks.cpp | 4 ++++ src/users.cpp | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/modules/m_nonicks.cpp b/src/modules/m_nonicks.cpp index a7f7b142f..14957759c 100644 --- a/src/modules/m_nonicks.cpp +++ b/src/modules/m_nonicks.cpp @@ -81,6 +81,10 @@ class ModuleNoNickChange : public Module if (isdigit(newnick[0])) /* don't even think about touching a switch to uid! */ return 0; + // Allow forced nick changes. + if (user->GetExt("NICKForced")) + return 0; + for (UCListIter i = user->chans.begin(); i != user->chans.end(); i++) { Channel* curr = i->first; diff --git a/src/users.cpp b/src/users.cpp index d108a314e..fd71b07ad 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -1038,8 +1038,12 @@ bool User::ForceNickChange(const char* newnick) this->InvalidateCache(); + this->Extend("NICKForced", "Enabled"); + FOREACH_RESULT(I_OnUserPreNick,OnUserPreNick(this, newnick)); + this->Shrink("NICKForced"); + if (MOD_RESULT) { ServerInstance->stats->statsCollisions++; -- 2.39.5