summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864>2010-02-02 03:21:03 +0000
committerAdam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864>2010-02-02 03:21:03 +0000
commit3d4cf39940144be19645a3a7cdecf95213b96f26 (patch)
tree76d2cfe93a46897f55ae92227522821346b96a36 /src
parent122dcd082ae1ad01e953d0488f9fc41a4e0566a3 (diff)
Only set necessary modes on people, eg dont set +qaohv.. unnecessary
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2779 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src')
-rw-r--r--src/channels.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/src/channels.c b/src/channels.c
index 0a8677820..a6f998f65 100644
--- a/src/channels.c
+++ b/src/channels.c
@@ -1478,31 +1478,28 @@ void chan_set_correct_modes(User * user, Channel * c, int give_modes)
{
if (owner && check_access(user, ci, CA_AUTOOWNER))
c->SetMode(NULL, CMODE_OWNER, user->nick);
-
- if (admin && check_access(user, ci, CA_AUTOPROTECT))
+ else if (admin && check_access(user, ci, CA_AUTOPROTECT))
c->SetMode(NULL, CMODE_PROTECT, user->nick);
if (op && check_access(user, ci, CA_AUTOOP))
c->SetMode(NULL, CMODE_OP, user->nick);
-
- if (halfop && check_access(user, ci, CA_AUTOHALFOP))
+ else if (halfop && check_access(user, ci, CA_AUTOHALFOP))
c->SetMode(NULL, CMODE_HALFOP, user->nick);
-
- if (voice && check_access(user, ci, CA_AUTOVOICE))
+ else if (voice && check_access(user, ci, CA_AUTOVOICE))
c->SetMode(NULL, CMODE_VOICE, user->nick);
}
if ((ci->HasFlag(CI_SECUREOPS) || check_access(user, ci, CA_AUTODEOP)) && !is_ulined(user->server->name))
{
- if (owner && !IsFounder(user, ci))
+ if (owner && c->HasUserStatus(user, CMODE_OWNER) && !IsFounder(user, ci))
c->RemoveMode(NULL, CMODE_OWNER, user->nick);
- if (admin && !check_access(user, ci, CA_AUTOPROTECT) && !check_access(user, ci, CA_PROTECTME))
+ if (admin && c->HasUserStatus(user, CMODE_PROTECT) && !check_access(user, ci, CA_AUTOPROTECT) && !check_access(user, ci, CA_PROTECTME))
c->RemoveMode(NULL, CMODE_PROTECT, user->nick);
- if (op && !check_access(user, ci, CA_AUTOOP) && !check_access(user, ci, CA_OPDEOPME))
+ if (op && c->HasUserStatus(user, CMODE_OP) && !check_access(user, ci, CA_AUTOOP) && !check_access(user, ci, CA_OPDEOPME))
c->RemoveMode(NULL, CMODE_OP, user->nick);
- if (halfop && !check_access(user, ci, CA_AUTOHALFOP) && !check_access(user, ci, CA_HALFOPME))
+ if (halfop && c->HasUserStatus(user, CMODE_HALFOP) && !check_access(user, ci, CA_AUTOHALFOP) && !check_access(user, ci, CA_HALFOPME))
c->RemoveMode(NULL, CMODE_HALFOP, user->nick);
}
}