From 3d4cf39940144be19645a3a7cdecf95213b96f26 Mon Sep 17 00:00:00 2001 From: Adam- Date: Tue, 2 Feb 2010 03:21:03 +0000 Subject: [PATCH] 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 --- src/channels.c | 17 +++++++---------- 1 file 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); } }