aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2016-02-23 23:41:18 +0100
committerShauren <shauren.trinity@gmail.com>2016-02-23 23:41:18 +0100
commita0b2be6c1d0ae17ad8a17692d77f2020bbb9296e (patch)
treea2adfc1f6a921669ee57d4d966dfded3617d6078 /src
parent8086a39210659c44d52fb463f5a39f047aa45685 (diff)
Core/Logging: Force synchronous logging after io_service shutdown - fixes logging on worldserver shutdown
Diffstat (limited to 'src')
-rw-r--r--src/common/Logging/Log.cpp7
-rw-r--r--src/common/Logging/Log.h1
-rw-r--r--src/server/worldserver/Main.cpp2
3 files changed, 10 insertions, 0 deletions
diff --git a/src/common/Logging/Log.cpp b/src/common/Logging/Log.cpp
index fb5b9165235..7e1a378b824 100644
--- a/src/common/Logging/Log.cpp
+++ b/src/common/Logging/Log.cpp
@@ -332,6 +332,13 @@ void Log::Initialize(boost::asio::io_service* ioService)
LoadFromConfig();
}
+void Log::SetSynchronous()
+{
+ delete _strand;
+ _strand = nullptr;
+ _ioService = nullptr;
+}
+
void Log::LoadFromConfig()
{
Close();
diff --git a/src/common/Logging/Log.h b/src/common/Logging/Log.h
index a90481ad5d2..eafd7412a94 100644
--- a/src/common/Logging/Log.h
+++ b/src/common/Logging/Log.h
@@ -51,6 +51,7 @@ class Log
}
void Initialize(boost::asio::io_service* ioService);
+ void SetSynchronous(); // Not threadsafe - should only be called from main() after all threads are joined
void LoadFromConfig();
void Close();
bool ShouldLog(std::string const& type, LogLevel level) const;
diff --git a/src/server/worldserver/Main.cpp b/src/server/worldserver/Main.cpp
index 46bcad1c37f..2f556b3fa64 100644
--- a/src/server/worldserver/Main.cpp
+++ b/src/server/worldserver/Main.cpp
@@ -255,6 +255,8 @@ extern int main(int argc, char** argv)
// Shutdown starts here
ShutdownThreadPool(threadPool);
+ sLog->SetSynchronous();
+
sScriptMgr->OnShutdown();
sIpcContext->Close();