|
|
|
@ -91,7 +91,7 @@ public:
|
|
|
|
|
bool Enqueue(WorkItem* item)
|
|
|
|
|
{
|
|
|
|
|
LOCK(cs);
|
|
|
|
|
if (queue.size() >= maxDepth) {
|
|
|
|
|
if (!running || queue.size() >= maxDepth) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
queue.emplace_back(std::unique_ptr<WorkItem>(item));
|
|
|
|
@ -107,7 +107,7 @@ public:
|
|
|
|
|
WAIT_LOCK(cs, lock);
|
|
|
|
|
while (running && queue.empty())
|
|
|
|
|
cond.wait(lock);
|
|
|
|
|
if (!running)
|
|
|
|
|
if (!running && queue.empty())
|
|
|
|
|
break;
|
|
|
|
|
i = std::move(queue.front());
|
|
|
|
|
queue.pop_front();
|
|
|
|
@ -456,8 +456,6 @@ void StopHTTPServer()
|
|
|
|
|
thread.join();
|
|
|
|
|
}
|
|
|
|
|
g_thread_http_workers.clear();
|
|
|
|
|
delete workQueue;
|
|
|
|
|
workQueue = nullptr;
|
|
|
|
|
}
|
|
|
|
|
// Unlisten sockets, these are what make the event loop running, which means
|
|
|
|
|
// that after this and all connections are closed the event loop will quit.
|
|
|
|
@ -477,6 +475,10 @@ void StopHTTPServer()
|
|
|
|
|
event_base_free(eventBase);
|
|
|
|
|
eventBase = nullptr;
|
|
|
|
|
}
|
|
|
|
|
if (workQueue) {
|
|
|
|
|
delete workQueue;
|
|
|
|
|
workQueue = nullptr;
|
|
|
|
|
}
|
|
|
|
|
LogPrint(BCLog::HTTP, "Stopped HTTP server\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|