summaryrefslogtreecommitdiff
path: root/src/commands/cmd_rehash.cpp
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2008-02-24 17:18:15 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2008-02-24 17:18:15 +0000
commitf7df5c69c4c54ebac32b1f3af3381495bef2cbd5 (patch)
treecae8fade2d47600b1828fa67e6f1c96686d72551 /src/commands/cmd_rehash.cpp
parent3a6199fb2348f9bdef8ab155fdd158a3e8cbfeec (diff)
Theres more to do here. Read the TODOs
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9021 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/commands/cmd_rehash.cpp')
-rw-r--r--src/commands/cmd_rehash.cpp25
1 files changed, 21 insertions, 4 deletions
diff --git a/src/commands/cmd_rehash.cpp b/src/commands/cmd_rehash.cpp
index 760689eb0..85df91930 100644
--- a/src/commands/cmd_rehash.cpp
+++ b/src/commands/cmd_rehash.cpp
@@ -36,16 +36,33 @@ CmdResult CommandRehash::Handle (const char* const* parameters, int pcnt, User *
ServerInstance->SNO->WriteToSnoMask('A', "%s is rehashing config file %s",user->nick,ServerConfig::CleanFilename(ServerInstance->ConfigFileName));
ServerInstance->Logs->CloseLogs();
if (!ServerInstance->OpenLog(ServerInstance->Config->argv, ServerInstance->Config->argc))
- user->WriteServ("*** NOTICE %s :ERROR: Could not open logfile %s: %s", user->nick, ServerInstance->Config->logpath.c_str(), strerror(errno));
+ user->WriteServ("NOTICE %s :*** ERROR: Could not open logfile %s: %s", user->nick, ServerInstance->Config->logpath.c_str(), strerror(errno));
ServerInstance->RehashUsersAndChans();
FOREACH_MOD(I_OnGarbageCollect, OnGarbageCollect());
- /*ServerInstance->Config->Read(false,user);*/
+ if (!ServerInstance->ConfigThread)
+ {
+ ServerInstance->ConfigThread = new ConfigReaderThread(ServerInstance);
+ ServerInstance->Threads->Create(ServerInstance->ConfigThread);
+ }
+ else
+ {
+ /* A rehash is already in progress! ahh shit. */
+ user->WriteServ("*** NOTICE %s :*** Could not rehash: A rehash is already in progress.", user->nick);
+ return CMD_FAILURE;
+ }
+ /* TODO:
+ * ALL THIS STUFF HERE NEEDS TO BE HOOKED TO THE 'DEATH' OF THE REHASH THREAD
+ * VIA SOME NOTIFICATION EVENT. WE CANT JUST CALL IT ALL HERE.
+ * -- B
+ */
// Get XLine to do it's thing.
- ServerInstance->XLines->CheckELines();
+ /*ServerInstance->XLines->CheckELines();
ServerInstance->XLines->ApplyLines();
ServerInstance->Res->Rehash();
- ServerInstance->ResetMaxBans();
+ ServerInstance->ResetMaxBans();*/
}
+
+ /* TODO: Same as above for all this stuff, really */
if (old_disabled != ServerInstance->Config->DisabledCommands)
InitializeDisabledCommands(ServerInstance->Config->DisabledCommands, ServerInstance);