summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/configreader.cpp7
-rw-r--r--src/inspircd.cpp19
2 files changed, 18 insertions, 8 deletions
diff --git a/src/configreader.cpp b/src/configreader.cpp
index 92d2c9aea..a8c4dbaee 100644
--- a/src/configreader.cpp
+++ b/src/configreader.cpp
@@ -2305,3 +2305,10 @@ bool DoneELine(ServerConfig* conf, const char* tag)
conf->GetInstance()->XLines->CheckELines();
return true;
}
+
+void ConfigReaderThread::Run()
+{
+ ServerInstance->Config->Read(true, NULL, 0);
+ ServerInstance->Config->Read(true, NULL, 1);
+}
+
diff --git a/src/inspircd.cpp b/src/inspircd.cpp
index 8999e7ccc..e1c40199a 100644
--- a/src/inspircd.cpp
+++ b/src/inspircd.cpp
@@ -308,6 +308,11 @@ InspIRCd::InspIRCd(int argc, char** argv)
SE = SEF->Create(this);
delete SEF;
+
+ ThreadEngineFactory* tef = new ThreadEngineFactory();
+ this->Threads = tef->Create(this);
+ delete tef;
+
this->s_signal = 0;
// Create base manager classes early, so nothing breaks
@@ -477,15 +482,13 @@ InspIRCd::InspIRCd(int argc, char** argv)
SE->RecoverFromFork();
- /* Read config, pass 0. At the end if this pass,
- * the Config->IncludeFiles is populated, we call
- * Config->StartDownloads to initialize the downlaods of all
- * these files.
+ /* During startup we don't actually initialize this
+ * in the thread engine.
*/
- Config->Read(true, NULL, 0);
- Config->DoDownloads();
- /* We have all the files we can get, initiate pass 1 */
- Config->Read(true, NULL, 1);
+ this->ConfigThread = new ConfigReaderThread(this);
+ ConfigThread->Run();
+ delete ConfigThread;
+ this->ConfigThread = NULL;
this->AddServerName(Config->ServerName);