aboutsummaryrefslogtreecommitdiff
path: root/src/channels.cpp
diff options
context:
space:
mode:
authorGravatar brain2007-08-19 20:14:05 +0000
committerGravatar brain2007-08-19 20:14:05 +0000
commitcf4439ac5c5e5f57aba2c998ee63b9b27ec17d69 (patch)
tree3e95ffda5801a7344c1f9fc47119fe3c3a810496 /src/channels.cpp
parentAllow changing of an oper's host on oper up using <type:class> (give it a con... (diff)
Add <connect:maxchans> as per feature bug #338 - combined with the last feature, this allows per-oper specific maxchans values, and even the same for non-opers!
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@7761 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/channels.cpp')
-rw-r--r--src/channels.cpp21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/channels.cpp b/src/channels.cpp
index 6ba5aaa5f..bd8a9719c 100644
--- a/src/channels.cpp
+++ b/src/channels.cpp
@@ -219,9 +219,9 @@ chanrec* chanrec::JoinUser(InspIRCd* Instance, userrec *user, const char* cn, bo
*/
if (IS_LOCAL(user) && !override)
{
- if (IS_OPER(user))
+ if (user->GetMaxChans())
{
- if (user->chans.size() >= Instance->Config->OperMaxChans)
+ if (user->chans.size() >= user->GetMaxChans())
{
user->WriteServ("405 %s %s :You are on too many channels",user->nick, cn);
return NULL;
@@ -229,10 +229,21 @@ chanrec* chanrec::JoinUser(InspIRCd* Instance, userrec *user, const char* cn, bo
}
else
{
- if (user->chans.size() >= Instance->Config->MaxChans)
+ if (IS_OPER(user))
{
- user->WriteServ("405 %s %s :You are on too many channels",user->nick, cn);
- return NULL;
+ if (user->chans.size() >= Instance->Config->OperMaxChans)
+ {
+ user->WriteServ("405 %s %s :You are on too many channels",user->nick, cn);
+ return NULL;
+ }
+ }
+ else
+ {
+ if (user->chans.size() >= Instance->Config->MaxChans)
+ {
+ user->WriteServ("405 %s %s :You are on too many channels",user->nick, cn);
+ return NULL;
+ }
}
}
}