summaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-12-14 17:46:47 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-12-14 17:46:47 +0000
commita78cecbeb9c677bdd4b2f44c01195759af63485b (patch)
tree03b0a71514c6e0dcf6eec78eefe160a2ea7f8b47 /src/modules
parent4eb254df411f8dd1694f1b3781c77f702538c59f (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.cpp4
-rw-r--r--src/modules/m_httpd_stats.cpp13
-rw-r--r--src/modules/m_nonicks.cpp17
-rw-r--r--src/modules/m_restrictbanned.cpp11
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;