mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-04-02 03:46:01 +02:00
Merge #19006: rpc: Avoid crash when g_thread_http was never started
faf45d1f1fhttp: Avoid crash when g_thread_http was never started (MarcoFalke)fa12a37b27test: Replace inline-comments with logs, pep8 formatting (MarcoFalke)fa83b39ff3init: Remove confusing and redundant InitError (MarcoFalke) Pull request description: Avoid a crash during shutdown when the init sequence failed for some reason ACKs for top commit: promag: Tested ACKfaf45d1f1f. ryanofsky: Code review ACKfaf45d1f1f. Thanks for updates, this is much easier to parse for me now. Since previous reviews: split out and reverted some cleanups & replaced chmod with mkdir in test hebasto: ACKfaf45d1f1f, tested on Linux Mint 19.3 with the following patch: Tree-SHA512: 59632bf01c999e65c724e2728ac103250ccd8b0b16fac19d3a2a82639ab73e4f2efb86c78e63c588a5954625d8d0cf9545e2a7e070e6e15d2a54beeb50e00b61
This commit is contained in:
@@ -9,7 +9,6 @@
|
||||
#include <httpserver.h>
|
||||
#include <rpc/protocol.h>
|
||||
#include <rpc/server.h>
|
||||
#include <ui_interface.h>
|
||||
#include <util/strencodings.h>
|
||||
#include <util/system.h>
|
||||
#include <util/translation.h>
|
||||
@@ -251,9 +250,6 @@ static bool InitRPCAuthentication()
|
||||
{
|
||||
LogPrintf("Using random cookie authentication.\n");
|
||||
if (!GenerateAuthCookie(&strRPCUserColonPass)) {
|
||||
uiInterface.ThreadSafeMessageBox(
|
||||
_("Error: A fatal internal error occurred, see debug.log for details"), // Same message as AbortNode
|
||||
"", CClientUIInterface::MSG_ERROR);
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -421,7 +421,7 @@ bool UpdateHTTPServerLogging(bool enable) {
|
||||
#endif
|
||||
}
|
||||
|
||||
static std::thread threadHTTP;
|
||||
static std::thread g_thread_http;
|
||||
static std::vector<std::thread> g_thread_http_workers;
|
||||
|
||||
void StartHTTPServer()
|
||||
@@ -429,7 +429,7 @@ void StartHTTPServer()
|
||||
LogPrint(BCLog::HTTP, "Starting HTTP server\n");
|
||||
int rpcThreads = std::max((long)gArgs.GetArg("-rpcthreads", DEFAULT_HTTP_THREADS), 1L);
|
||||
LogPrintf("HTTP: starting %d worker threads\n", rpcThreads);
|
||||
threadHTTP = std::thread(ThreadHTTP, eventBase);
|
||||
g_thread_http = std::thread(ThreadHTTP, eventBase);
|
||||
|
||||
for (int i = 0; i < rpcThreads; i++) {
|
||||
g_thread_http_workers.emplace_back(HTTPWorkQueueRun, workQueue, i);
|
||||
@@ -467,7 +467,7 @@ void StopHTTPServer()
|
||||
boundSockets.clear();
|
||||
if (eventBase) {
|
||||
LogPrint(BCLog::HTTP, "Waiting for HTTP event thread to exit\n");
|
||||
threadHTTP.join();
|
||||
if (g_thread_http.joinable()) g_thread_http.join();
|
||||
}
|
||||
if (eventHTTP) {
|
||||
evhttp_free(eventHTTP);
|
||||
|
||||
Reference in New Issue
Block a user