summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>2009-02-04 12:50:19 +0000
committerw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>2009-02-04 12:50:19 +0000
commitd8b04f5ea773340dc52d3728521c21829e0136ca (patch)
tree410be66218834a581fdd5c965c22939848a87208 /src
parent95fd083b589d7b16df98fe00711e8ac2cf9cc871 (diff)
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
Diffstat (limited to 'src')
-rw-r--r--src/modules/m_nonicks.cpp4
-rw-r--r--src/users.cpp4
2 files changed, 8 insertions, 0 deletions
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++;