diff options
author | w00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-02-04 12:50:19 +0000 |
---|---|---|
committer | w00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-02-04 12:50:19 +0000 |
commit | d8b04f5ea773340dc52d3728521c21829e0136ca (patch) | |
tree | 410be66218834a581fdd5c965c22939848a87208 | |
parent | 95fd083b589d7b16df98fe00711e8ac2cf9cc871 (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
-rw-r--r-- | src/modules/m_nonicks.cpp | 4 | ||||
-rw-r--r-- | src/users.cpp | 4 |
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++; |