From a78cecbeb9c677bdd4b2f44c01195759af63485b Mon Sep 17 00:00:00 2001 From: brain Date: Thu, 14 Dec 2006 17:46:47 +0000 Subject: Refactor userrec::chans. Old way: A vector of ucrec, MAXCHANS in size by default populated by NULLS, so you have to scan the vector to find an empty slot when joining a user, parting a user etc New way: std::map (the char holds their basic core permissions on the channel [voice, halfop, op]) This increases speed a ton, and removes some wtf-age. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5986 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/modules/m_nonicks.cpp | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) (limited to 'src/modules/m_nonicks.cpp') diff --git a/src/modules/m_nonicks.cpp b/src/modules/m_nonicks.cpp index 90fd93f1c..df4552860 100644 --- a/src/modules/m_nonicks.cpp +++ b/src/modules/m_nonicks.cpp @@ -87,18 +87,15 @@ class ModuleNoNickChange : public Module irc::string me = ServerInstance->Config->ServerName; if (server == me) { - for (std::vector::iterator i = user->chans.begin(); i != user->chans.end(); i++) + for (UCListIter i = user->chans.begin(); i != user->chans.end(); i++) { - if (((ucrec*)(*i))->channel != NULL) + chanrec* curr = i->first; + if ((curr->IsModeSet('N')) && (!*user->oper)) { - chanrec* curr = ((ucrec*)(*i))->channel; - if ((curr->IsModeSet('N')) && (!*user->oper)) - { - // don't allow the nickchange, theyre on at least one channel with +N set - // and theyre not an oper - user->WriteServ("447 %s :Can't change nickname while on %s (+N is set)",user->nick,curr->name); - return 1; - } + // don't allow the nickchange, theyre on at least one channel with +N set + // and theyre not an oper + user->WriteServ("447 %s :Can't change nickname while on %s (+N is set)", user->nick, curr->name); + return 1; } } } -- cgit v1.2.3