summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864>2010-03-29 21:01:48 +0000
committerAdam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864>2010-03-29 21:01:48 +0000
commit1e0bfbd15a2c041902023be6a614cd2db4e1534f (patch)
tree07248d9f47bcdf56237e42763f815816160f561a /src
parentcb73ab9d23633a5812d45658404f17b0992394ea (diff)
Fixed bugs #1146 and #1147 - Fixed check_modes to only apply defcon settings when defcon is actually on
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/stable@2841 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src')
-rw-r--r--src/chanserv.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/chanserv.c b/src/chanserv.c
index d6c8a6970..046be26b8 100644
--- a/src/chanserv.c
+++ b/src/chanserv.c
@@ -1086,6 +1086,7 @@ void check_modes(Channel * c)
ChannelInfo *ci;
CBModeInfo *cbmi = NULL;
CBMode *cbm = NULL;
+ boolean DefConOn = DefConLevel != 5;
if (!c) {
if (debug) {
@@ -1131,7 +1132,7 @@ void check_modes(Channel * c)
*/
if (ci)
modes = ~c->mode & ci->mlock_on;
- if (DefConModesSet)
+ if (DefConOn && DefConModesSet)
modes |= (~c->mode & DefConModesOn);
/* Initialize the buffers */
@@ -1147,7 +1148,7 @@ void check_modes(Channel * c)
if (cbmi->getvalue && cbmi->csgetvalue) {
char *value;
/* Check if it's a defcon or mlock mode */
- if (DefConModesOn & cbmi->flag)
+ if (DefConOn && DefConModesOn & cbmi->flag)
value = cbmi->csgetvalue(&DefConModesCI);
else if (ci)
value = cbmi->csgetvalue(ci);
@@ -1168,13 +1169,13 @@ void check_modes(Channel * c)
}
} else if (cbmi->getvalue && cbmi->csgetvalue
&& ((ci && (ci->mlock_on & cbmi->flag))
- || (DefConModesOn & cbmi->flag))
+ || (DefConOn && DefConModesOn & cbmi->flag))
&& (c->mode & cbmi->flag)) {
char *value = cbmi->getvalue(c);
char *csvalue;
/* Check if it's a defcon or mlock mode */
- if (DefConModesOn & cbmi->flag)
+ if (DefConOn && DefConModesOn & cbmi->flag)
csvalue = cbmi->csgetvalue(&DefConModesCI);
else if (ci)
csvalue = cbmi->csgetvalue(ci);
@@ -1205,10 +1206,10 @@ void check_modes(Channel * c)
if (ci) {
modes = c->mode & ci->mlock_off;
/* Make sure we don't remove a mode just set by defcon.. ~ Viper */
- if (DefConModesSet)
+ if (DefConOn && DefConModesSet)
modes &= ~(modes & DefConModesOn);
}
- if (DefConModesSet)
+ if (DefConOn && DefConModesSet)
modes |= c->mode & DefConModesOff;
if (modes) {