summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/inspircd.cpp1
-rw-r--r--src/modules/extra/m_mssql.cpp1
-rw-r--r--src/modules/extra/m_mysql.cpp3
-rw-r--r--src/threadengine.cpp17
4 files changed, 15 insertions, 7 deletions
diff --git a/src/inspircd.cpp b/src/inspircd.cpp
index a1a5d2d03..5a792b884 100644
--- a/src/inspircd.cpp
+++ b/src/inspircd.cpp
@@ -788,6 +788,7 @@ int InspIRCd::Run()
FOREACH_MOD_I(this, I_OnRehash, OnRehash(user));
this->BuildISupport();
+ ConfigThread->join();
delete ConfigThread;
ConfigThread = NULL;
}
diff --git a/src/modules/extra/m_mssql.cpp b/src/modules/extra/m_mssql.cpp
index 5fd62f55e..9cc7a567c 100644
--- a/src/modules/extra/m_mssql.cpp
+++ b/src/modules/extra/m_mssql.cpp
@@ -668,6 +668,7 @@ class ModuleMsSQL : public Module
virtual ~ModuleMsSQL()
{
+ queryDispatcher->join();
delete queryDispatcher;
ClearQueue();
ClearAllConnections();
diff --git a/src/modules/extra/m_mysql.cpp b/src/modules/extra/m_mysql.cpp
index 465992d30..224bf0f56 100644
--- a/src/modules/extra/m_mysql.cpp
+++ b/src/modules/extra/m_mysql.cpp
@@ -682,8 +682,7 @@ ModuleSQL::ModuleSQL(InspIRCd* Me) : Module(Me), rehashing(false)
if (!ServerInstance->Modules->PublishFeature("SQL", this))
{
- /* Tell worker thread to exit NOW,
- * Automatically joins */
+ Dispatcher->join();
delete Dispatcher;
ServerInstance->Modules->DoneWithInterface("SQLutils");
throw ModuleException("m_mysql: Unable to publish feature 'SQL'");
diff --git a/src/threadengine.cpp b/src/threadengine.cpp
index c6128d132..c2976c047 100644
--- a/src/threadengine.cpp
+++ b/src/threadengine.cpp
@@ -20,14 +20,21 @@
#include "inspircd.h"
#include "threadengine.h"
+void Thread::SetExitFlag()
+{
+ ExitFlag = true;
+}
+
+void Thread::join()
+{
+ state->FreeThread(this);
+ delete state;
+ state = 0;
+}
+
/** If this thread has a Creator set, call it to
* free the thread
*/
Thread::~Thread()
{
- if (state)
- {
- state->FreeThread(this);
- delete state;
- }
}