summaryrefslogtreecommitdiff
path: root/src/configreader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/configreader.cpp')
-rw-r--r--src/configreader.cpp19
1 files changed, 3 insertions, 16 deletions
diff --git a/src/configreader.cpp b/src/configreader.cpp
index 9e0aa2031..348554584 100644
--- a/src/configreader.cpp
+++ b/src/configreader.cpp
@@ -30,7 +30,6 @@
#include "xline.h"
#include "exitcodes.h"
#include "commands/cmd_whowas.h"
-#include "modes/cmode_h.h"
#include "configparser.h"
ServerConfig::ServerConfig()
@@ -749,9 +748,6 @@ void ServerConfig::Apply(ServerConfig* old, const std::string &useruid)
ServerInstance->Exit(EXIT_STATUS_CONFIG);
}
- if (ConfValue("options")->getBool("allowhalfop"))
- ServerInstance->Modes->AddMode(new ModeChannelHalfOp);
-
return;
}
@@ -768,18 +764,6 @@ void ServerConfig::Apply(ServerConfig* old, const std::string &useruid)
void ServerConfig::ApplyModules(User* user)
{
- bool AllowHalfOp = ConfValue("options")->getBool("allowhalfop");
- ModeHandler* mh = ServerInstance->Modes->FindMode('h', MODETYPE_CHANNEL);
- if (AllowHalfOp && !mh) {
- ServerInstance->Logs->Log("CONFIG", DEFAULT, "Enabling halfop mode.");
- mh = new ModeChannelHalfOp;
- ServerInstance->Modes->AddMode(mh);
- } else if (!AllowHalfOp && mh) {
- ServerInstance->Logs->Log("CONFIG", DEFAULT, "Disabling halfop mode.");
- ServerInstance->Modes->DelMode(mh);
- delete mh;
- }
-
Module* whowas = ServerInstance->Modules->Find("cmd_whowas.so");
if (whowas)
WhowasRequest(NULL, whowas, WhowasRequest::WHOWAS_PRUNE).Send();
@@ -802,6 +786,9 @@ void ServerConfig::ApplyModules(User* user)
}
}
+ if (ConfValue("options")->getBool("allowhalfop") && removed_modules.erase("m_halfop.so") == 0)
+ added_modules.push_back("m_halfop.so");
+
for (std::set<std::string>::iterator removing = removed_modules.begin(); removing != removed_modules.end(); removing++)
{
// Don't remove cmd_*.so, just remove m_*.so