From 9437834f8f4d3abf32a8629747385d666c652084 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Tue, 31 Oct 2017 13:13:13 +0300 Subject: fixes #1011 (thread-unsafe code in SkypeWeb) --- protocols/SkypeWeb/src/request_queue.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'protocols/SkypeWeb/src/request_queue.cpp') diff --git a/protocols/SkypeWeb/src/request_queue.cpp b/protocols/SkypeWeb/src/request_queue.cpp index a2c125e0c4..84d725aba4 100644 --- a/protocols/SkypeWeb/src/request_queue.cpp +++ b/protocols/SkypeWeb/src/request_queue.cpp @@ -26,6 +26,11 @@ RequestQueue::RequestQueue(HNETLIBUSER _nlu) : RequestQueue::~RequestQueue() { + if (hRequestQueueThread) { + WaitForSingleObject(hRequestQueueThread, INFINITE); + hRequestQueueThread = nullptr; + } + requests.destroy(); } @@ -92,8 +97,11 @@ unsigned int RequestQueue::WorkerThread(void *arg) { RequestQueue *queue = (RequestQueue*)arg; - while (!queue->isTerminated) { + while (true) { queue->hRequestQueueEvent.Wait(); + if (queue->isTerminated) + break; + while (true) { RequestQueueItem *item = NULL; { -- cgit v1.2.3