diff options
-rw-r--r-- | include/inspircd.h | 4 | ||||
-rw-r--r-- | src/commands/cmd_rehash.cpp | 2 | ||||
-rw-r--r-- | src/configreader.cpp | 5 | ||||
-rw-r--r-- | src/inspircd.cpp | 2 |
4 files changed, 9 insertions, 4 deletions
diff --git a/include/inspircd.h b/include/inspircd.h index a933e5c41..1a2c78c7a 100644 --- a/include/inspircd.h +++ b/include/inspircd.h @@ -235,8 +235,10 @@ class BanCacheManager; class ConfigReaderThread : public Thread { InspIRCd* ServerInstance; + bool do_bail; + User* TheUser; public: - ConfigReaderThread(InspIRCd* Instance) : Thread(), ServerInstance(Instance) + ConfigReaderThread(InspIRCd* Instance, bool bail, User* user) : Thread(), ServerInstance(Instance), do_bail(bail), TheUser(user) { } diff --git a/src/commands/cmd_rehash.cpp b/src/commands/cmd_rehash.cpp index 85df91930..7fdb9862e 100644 --- a/src/commands/cmd_rehash.cpp +++ b/src/commands/cmd_rehash.cpp @@ -41,7 +41,7 @@ CmdResult CommandRehash::Handle (const char* const* parameters, int pcnt, User * FOREACH_MOD(I_OnGarbageCollect, OnGarbageCollect()); if (!ServerInstance->ConfigThread) { - ServerInstance->ConfigThread = new ConfigReaderThread(ServerInstance); + ServerInstance->ConfigThread = new ConfigReaderThread(ServerInstance, false, user); ServerInstance->Threads->Create(ServerInstance->ConfigThread); } else diff --git a/src/configreader.cpp b/src/configreader.cpp index 99261120f..12e33ad34 100644 --- a/src/configreader.cpp +++ b/src/configreader.cpp @@ -799,6 +799,8 @@ void ServerConfig::Read(bool bail, User* user) static char announceinvites[MAXBUF]; /* options:announceinvites setting */ errstr.clear(); + include_stack.clear(); + /* These tags MUST occur and must ONLY occur once in the config file */ static const char* Once[] = { "server", "admin", "files", "power", "options", NULL }; @@ -2156,6 +2158,7 @@ bool DoneELine(ServerConfig* conf, const char* tag) void ConfigReaderThread::Run() { - ServerInstance->Config->Read(true, NULL); + /* TODO: TheUser may be invalid by the time we get here! Check its validity, or pass a UID would be better */ + ServerInstance->Config->Read(do_bail, TheUser); } diff --git a/src/inspircd.cpp b/src/inspircd.cpp index 998e0d145..aaad2746a 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -485,7 +485,7 @@ InspIRCd::InspIRCd(int argc, char** argv) /* During startup we don't actually initialize this * in the thread engine. */ - this->ConfigThread = new ConfigReaderThread(this); + this->ConfigThread = new ConfigReaderThread(this, true, NULL); ConfigThread->Run(); delete ConfigThread; this->ConfigThread = NULL; |