aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bitcoinrpc.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp
index 82bab36dc8..48c5a738b5 100644
--- a/src/bitcoinrpc.cpp
+++ b/src/bitcoinrpc.cpp
@@ -2913,10 +2913,15 @@ void ThreadRPCServer2(void* parg)
StopRequests();
}
+static CCriticalSection cs_THREAD_RPCHANDLER;
+
void ThreadRPCServer3(void* parg)
{
IMPLEMENT_RANDOMIZE_STACK(ThreadRPCServer3(parg));
- vnThreadsRunning[THREAD_RPCHANDLER]++;
+ {
+ LOCK(cs_THREAD_RPCHANDLER);
+ vnThreadsRunning[THREAD_RPCHANDLER]++;
+ }
AcceptedConnection *conn = (AcceptedConnection *) parg;
bool fRun = true;
@@ -2925,7 +2930,10 @@ void ThreadRPCServer3(void* parg)
{
conn->close();
delete conn;
- --vnThreadsRunning[THREAD_RPCHANDLER];
+ {
+ LOCK(cs_THREAD_RPCHANDLER);
+ --vnThreadsRunning[THREAD_RPCHANDLER];
+ }
return;
}
map<string, string> mapHeaders;
@@ -3005,7 +3013,10 @@ void ThreadRPCServer3(void* parg)
}
delete conn;
- vnThreadsRunning[THREAD_RPCHANDLER]--;
+ {
+ LOCK(cs_THREAD_RPCHANDLER);
+ vnThreadsRunning[THREAD_RPCHANDLER]--;
+ }
}
json_spirit::Value CRPCTable::execute(const std::string &strMethod, const json_spirit::Array &params) const