diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-12-14 17:46:47 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-12-14 17:46:47 +0000 |
commit | a78cecbeb9c677bdd4b2f44c01195759af63485b (patch) | |
tree | 03b0a71514c6e0dcf6eec78eefe160a2ea7f8b47 /src/modules | |
parent | 4eb254df411f8dd1694f1b3781c77f702538c59f (diff) |
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<chanrec*, char> (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
Diffstat (limited to 'src/modules')
-rw-r--r-- | src/modules/m_blockamsg.cpp | 4 | ||||
-rw-r--r-- | src/modules/m_httpd_stats.cpp | 13 | ||||
-rw-r--r-- | src/modules/m_nonicks.cpp | 17 | ||||
-rw-r--r-- | src/modules/m_restrictbanned.cpp | 11 |
4 files changed, 16 insertions, 29 deletions
diff --git a/src/modules/m_blockamsg.cpp b/src/modules/m_blockamsg.cpp index 1b5fee40b..87cba2972 100644 --- a/src/modules/m_blockamsg.cpp +++ b/src/modules/m_blockamsg.cpp @@ -122,9 +122,7 @@ public: if((*c == ',') && *(c+1) && (*(c+1) == '#')) targets++; - for(std::vector<ucrec*>::iterator f = user->chans.begin(); f != user->chans.end(); f++) - if(((ucrec*)(*f))->channel) - userchans++; + userchans = user->chans.size(); // Check that this message wasn't already sent within a few seconds. BlockedMessage* m; diff --git a/src/modules/m_httpd_stats.cpp b/src/modules/m_httpd_stats.cpp index eda5b6f66..fb5499c2d 100644 --- a/src/modules/m_httpd_stats.cpp +++ b/src/modules/m_httpd_stats.cpp @@ -212,16 +212,13 @@ class ModuleHttpStats : public Module void OnUserQuit(userrec* user, const std::string &message) { - for (std::vector<ucrec*>::const_iterator v = user->chans.begin(); v != user->chans.end(); v++) + for (UCListIter v = user->chans.begin(); v != user->chans.end(); v++) { - if (((ucrec*)(*v))->channel) + chanrec* c = v->first; + StatsIter a = sh->find(c->name); + if (a != sh->end()) { - chanrec* c = ((ucrec*)(*v))->channel; - StatsIter a = sh->find(c->name); - if (a != sh->end()) - { - a->second--; - } + a->second--; } } this->changed = true; 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<ucrec*>::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; } } } diff --git a/src/modules/m_restrictbanned.cpp b/src/modules/m_restrictbanned.cpp index 51ff39772..c37951eea 100644 --- a/src/modules/m_restrictbanned.cpp +++ b/src/modules/m_restrictbanned.cpp @@ -69,15 +69,10 @@ class ModuleRestrictBanned : public Module return 0; /* bit of a special case. */ - for (std::vector<ucrec*>::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 *channel = ((ucrec*)(*i))->channel; - - if (CheckRestricted(user, channel, "change your nickname") == 1) - return 1; - } + if (CheckRestricted(user, i->first, "change your nickname") == 1) + return 1; } return 0; |