summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/cs_set.c28
-rw-r--r--src/core/os_defcon.c8
2 files changed, 13 insertions, 23 deletions
diff --git a/src/core/cs_set.c b/src/core/cs_set.c
index b70a528f3..54c397c52 100644
--- a/src/core/cs_set.c
+++ b/src/core/cs_set.c
@@ -208,6 +208,8 @@ class CommandCSSet : public Command
}
else if (add)
{
+ ci->RemoveMLock(cm->Name);
+
if (cm->Type == MODE_PARAM)
{
cmp = static_cast<ChannelModeParam *>(cm);
@@ -218,27 +220,16 @@ class CommandCSSet : public Command
if (!cmp->IsValid(param.c_str()))
continue;
- ci->SetParam(cmp->Name, param);
+ ci->SetMLock(cmp->Name, true, param);
+ }
+ else
+ {
+ ci->SetMLock(cm->Name, true);
}
-
- ci->SetMLock(cm->Name, true);
- ci->RemoveMLock(cm->Name, false);
}
else
{
ci->SetMLock(cm->Name, false);
-
- if (ci->HasMLock(cm->Name, true))
- {
- ci->RemoveMLock(cm->Name, true);
-
- if (cm->Type == MODE_PARAM)
- {
- cmp = static_cast<ChannelModeParam *>(cm);
-
- ci->UnsetParam(cmp->Name);
- }
- }
}
}
else
@@ -249,8 +240,7 @@ class CommandCSSet : public Command
/* We can't mlock +L if +l is not mlocked as well. */
if (ci->HasMLock(CMODE_REDIRECT, true) && !ci->HasMLock(CMODE_LIMIT, true))
{
- ci->RemoveMLock(CMODE_REDIRECT, true);
- ci->UnsetParam(CMODE_REDIRECT);
+ ci->RemoveMLock(CMODE_REDIRECT);
notice_lang(s_ChanServ, u, CHAN_SET_MLOCK_L_REQUIRED);
}
}
@@ -260,7 +250,7 @@ class CommandCSSet : public Command
if (ModeManager::FindChannelModeByName(CMODE_NOKNOCK) && ircd->knock_needs_i) {
if (ci->HasMLock(CMODE_NOKNOCK, true) && !ci->HasMLock(CMODE_INVITE, true))
{
- ci->RemoveMLock(CMODE_NOKNOCK, true);
+ ci->RemoveMLock(CMODE_NOKNOCK);
notice_lang(s_ChanServ, u, CHAN_SET_MLOCK_K_REQUIRED);
}
}
diff --git a/src/core/os_defcon.c b/src/core/os_defcon.c
index fdcecc525..044eb54ac 100644
--- a/src/core/os_defcon.c
+++ b/src/core/os_defcon.c
@@ -200,14 +200,15 @@ class OSDEFCON : public Module
std::string param;
GetDefConParam(Name, &param);
- c->SetMode(Name);
-
std::string buf = "+" + std::string(&cm->ModeChar);
if (!param.empty())
{
buf += " " + param;
- c->SetParam(Name, param);
+ c->SetMode(Name, param);
}
+ else
+ c->SetMode(Name);
+
ircdproto->SendMode(findbot(s_OperServ), c->name, buf.c_str());
}
}
@@ -496,7 +497,6 @@ void defconParseModeString(const char *str)
{
DefConModesOn.UnsetFlag(CMODE_REDIRECT);
- //DefConModesCI.UnsetParam(CMODE_REDIRECT);
alog("DefConChanModes must lock mode +l as well to lock mode +L");
}
}