aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDDuarte <dnpd.dd@gmail.com>2014-08-02 19:30:55 +0100
committerDDuarte <dnpd.dd@gmail.com>2014-08-02 19:30:55 +0100
commitcb453fa093d205cc0539891670c04b4733d7e735 (patch)
tree412e6ddc5890aaacc95c65bc0e3d463c9db27f61 /src
parent56c0581e554e305917099d95a60fcedffeab96d8 (diff)
Core/Shared: Fix world and auth crash on shutdown (PCQ & DbWorker)
Fixes #12704
Diffstat (limited to 'src')
-rw-r--r--src/server/shared/Database/DatabaseWorker.cpp2
-rw-r--r--src/server/shared/Threading/ProducerConsumerQueue.h4
2 files changed, 3 insertions, 3 deletions
diff --git a/src/server/shared/Database/DatabaseWorker.cpp b/src/server/shared/Database/DatabaseWorker.cpp
index ca48ebdd811..e130429c8d0 100644
--- a/src/server/shared/Database/DatabaseWorker.cpp
+++ b/src/server/shared/Database/DatabaseWorker.cpp
@@ -50,7 +50,7 @@ void DatabaseWorker::WorkerThread()
_queue->WaitAndPop(operation);
- if (_cancelationToken)
+ if (_cancelationToken || !operation)
return;
operation->SetConnection(_connection);
diff --git a/src/server/shared/Threading/ProducerConsumerQueue.h b/src/server/shared/Threading/ProducerConsumerQueue.h
index 1fee1d0685f..accb0aebb11 100644
--- a/src/server/shared/Threading/ProducerConsumerQueue.h
+++ b/src/server/shared/Threading/ProducerConsumerQueue.h
@@ -58,7 +58,7 @@ public:
{
std::lock_guard<std::mutex> lock(_queueLock);
- if (_queue.empty())
+ if (_queue.empty() || _shutdown)
return false;
value = _queue.front();
@@ -77,7 +77,7 @@ public:
_condition.wait(lock);
}
- if (_queue.empty())
+ if (_queue.empty() || _shutdown)
return;
value = _queue.front();