diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/command_parse.cpp | 41 | ||||
-rw-r--r-- | src/configreader.cpp | 12 | ||||
-rw-r--r-- | src/inspircd.cpp | 3 |
3 files changed, 15 insertions, 41 deletions
diff --git a/src/command_parse.cpp b/src/command_parse.cpp index 3373f714f..e6b38242c 100644 --- a/src/command_parse.cpp +++ b/src/command_parse.cpp @@ -591,21 +591,12 @@ const char* CommandParser::LoadCommand(const char* name) return NULL; } -void CommandParser::SetupCommandTable(User* user) +/** This is only invoked on startup + */ +void CommandParser::SetupCommandTable() { - for (SharedObjectList::iterator command = RFCCommands.begin(); command != RFCCommands.end(); command++) - { - Command *cmdptr = cmdlist.find(command->first)->second; - cmdlist.erase(cmdlist.find(command->first)); - RFCCommands.erase(command); - delete cmdptr; - } - - if (!user) - { - printf("\nLoading core commands"); - fflush(stdout); - } + printf("\nLoading core commands"); + fflush(stdout); DIR* library = opendir(LIBRARYDIR); if (library) @@ -615,29 +606,19 @@ void CommandParser::SetupCommandTable(User* user) { if (InspIRCd::Match(entry->d_name, "cmd_*.so")) { - if (!user) - { - printf("."); - fflush(stdout); - } + printf("."); + fflush(stdout); + const char* err = this->LoadCommand(entry->d_name); if (err) { - if (user) - { - user->WriteServ("NOTICE %s :*** Failed to load core command %s: %s", user->nick.c_str(), entry->d_name, err); - } - else - { - printf("Error loading %s: %s", entry->d_name, err); - exit(EXIT_STATUS_BADHANDLER); - } + printf("Error loading %s: %s", entry->d_name, err); + exit(EXIT_STATUS_BADHANDLER); } } } closedir(library); - if (!user) - printf("\n"); + printf("\n"); } if (cmdlist.find("RELOAD") == cmdlist.end()) diff --git a/src/configreader.cpp b/src/configreader.cpp index 7f211084c..3be7d5945 100644 --- a/src/configreader.cpp +++ b/src/configreader.cpp @@ -1330,17 +1330,7 @@ void ServerConfig::Read(bool bail, const std::string &useruid) } - if (bail) - { - /** Note: This is safe, the method checks for user == NULL */ - ServerInstance->Threads->Lock(); - User* user = NULL; - if (!useruid.empty()) - user = ServerInstance->FindNick(useruid); - ServerInstance->Parser->SetupCommandTable(user); - ServerInstance->Threads->Unlock(); - } - else + if (!bail) { if (!useruid.empty()) { diff --git a/src/inspircd.cpp b/src/inspircd.cpp index c0391b679..1b173e56e 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -632,6 +632,9 @@ InspIRCd::InspIRCd(int argc, char** argv) delete ConfigThread; this->ConfigThread = NULL; + /** Note: This is safe, the method checks for user == NULL */ + this->Parser->SetupCommandTable(); + this->Res = new DNS(this); this->AddServerName(Config->ServerName); |