From fbf9df2ea32528c71b58160283b4eb2c52e30ccb Mon Sep 17 00:00:00 2001 From: Giel van Schijndel Date: Sun, 20 May 2012 20:27:53 +0200 Subject: [PATCH] Use the QueueShutdown signal to stop accepting new RPC connections Signed-off-by: Giel van Schijndel --- src/bitcoinrpc.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp index bd7cb3ef44..9e785a3e37 100644 --- a/src/bitcoinrpc.cpp +++ b/src/bitcoinrpc.cpp @@ -2798,6 +2798,12 @@ void ThreadRPCServer2(void* parg) const bool fUseSSL = GetBoolArg("-rpcssl"); asio::io_service io_service; + + // Make sure that we'll get stopped when the application shuts down + boost::signals2::scoped_connection rpc_listen_thread_stop( + uiInterface.QueueShutdown.connect(boost::bind( + &asio::io_service::stop, &io_service))); + ssl::context context(io_service, ssl::context::sslv23); if (fUseSSL) { @@ -2862,8 +2868,7 @@ void ThreadRPCServer2(void* parg) } vnThreadsRunning[THREAD_RPCLISTENER]--; - while (!fShutdown) - io_service.run_one(); + io_service.run(); vnThreadsRunning[THREAD_RPCLISTENER]++; // Terminate all outstanding accept-requests @@ -2873,11 +2878,6 @@ void ThreadRPCServer2(void* parg) acceptor->close(); } acceptors.clear(); - - // Handle any actions that are still in progress. - vnThreadsRunning[THREAD_RPCLISTENER]--; - io_service.run(); - vnThreadsRunning[THREAD_RPCLISTENER]++; } void ThreadRPCServer3(void* parg)