diff options
| author | Matt Corallo <[email protected]> | 2012-06-28 18:34:11 +0200 |
|---|---|---|
| committer | Matt Corallo <[email protected]> | 2012-06-28 18:34:11 +0200 |
| commit | 4e97a9d9eb91f87e0611c31f28e2e02a07cea8aa (patch) | |
| tree | b0c5b0eae5fe90d24ed1108a6e3fa510f8b9c34e /src | |
| parent | Use a rpc-specific queue to tell asio connections to shutdown. (diff) | |
| download | discoin-4e97a9d9eb91f87e0611c31f28e2e02a07cea8aa.tar.xz discoin-4e97a9d9eb91f87e0611c31f28e2e02a07cea8aa.zip | |
Lock vnThreadsRunning[THREAD_RPCHANDLER].
Diffstat (limited to 'src')
| -rw-r--r-- | src/bitcoinrpc.cpp | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp index 82bab36dc..48c5a738b 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 ¶ms) const |