rpc: Fix data race (UB) in InterruptRPC()

This commit is contained in:
practicalswift 2018-12-18 10:21:06 +01:00
parent f055389cb9
commit 6c10037f72
2 changed files with 4 additions and 7 deletions

View file

@ -24,7 +24,7 @@
#include <unordered_map>
static CCriticalSection cs_rpcWarmup;
static bool fRPCRunning = false;
static std::atomic<bool> g_rpc_running{false};
static bool fRPCInWarmup GUARDED_BY(cs_rpcWarmup) = true;
static std::string rpcWarmupStatus GUARDED_BY(cs_rpcWarmup) = "RPC server started";
/* Timer-creating functions */
@ -303,7 +303,7 @@ bool CRPCTable::appendCommand(const std::string& name, const CRPCCommand* pcmd)
void StartRPC()
{
LogPrint(BCLog::RPC, "Starting RPC\n");
fRPCRunning = true;
g_rpc_running = true;
g_rpcSignals.Started();
}
@ -311,7 +311,7 @@ void InterruptRPC()
{
LogPrint(BCLog::RPC, "Interrupting RPC\n");
// Interrupt e.g. running longpolls
fRPCRunning = false;
g_rpc_running = false;
}
void StopRPC()
@ -324,7 +324,7 @@ void StopRPC()
bool IsRPCRunning()
{
return fRPCRunning;
return g_rpc_running;
}
void SetRPCWarmupStatus(const std::string& newStatus)

View file

@ -7,9 +7,6 @@ deadlock:WalletBatch
# Intentional deadlock in tests
deadlock:TestPotentialDeadLockDetected
# fRPCRunning race
race:InterruptRPC
# Wildcard for all gui tests, should be replaced with non-wildcard suppressions
race:src/qt/test/*
deadlock:src/qt/test/*