#include "xline.h"
#include "exitcodes.h"
#include "commands/cmd_whowas.h"
-#include "modes/cmode_h.h"
#include "configparser.h"
ServerConfig::ServerConfig()
{
WhoWasGroupSize = WhoWasMaxGroups = WhoWasMaxKeep = 0;
NoUserDns = OperSpyWhois = HideBans = HideSplits = UndernetMsgPrefix = false;
- CycleHosts = AllowHalfop = InvBypassModes = true;
+ CycleHosts = InvBypassModes = true;
dns_timeout = DieDelay = 5;
MaxTargets = 20;
NetBufferSize = 10240;
ServerInstance->Exit(EXIT_STATUS_CONFIG);
}
- if (ConfValue("options")->getBool("allowhalfop"))
- ServerInstance->Modes->AddMode(new ModeChannelHalfOp);
-
return;
}
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();
}
}
+ 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
void ConfigReaderThread::Run()
{
- Config = new ServerConfig;
Config->Read();
done = true;
}
FOREACH_MOD(I_OnRehash, OnRehash(user));
ServerInstance->BuildISupport();
- delete old;
+ Config = old;
}
else
{
ServerInstance->Logs->CloseLogs();
ServerInstance->Config = old;
ServerInstance->Logs->OpenFileLogs();
- delete this->Config;
}
}