wallet_rpc_server: exit async, so we reply to stop_wallet RPC

Reported by saddam
This commit is contained in:
moneromooo-monero 2015-12-28 23:38:30 +00:00
parent 9847db6920
commit 61ce8d6fde
No known key found for this signature in database
GPG key ID: 686F07454D6CEFC3
2 changed files with 11 additions and 1 deletions

View file

@ -57,6 +57,7 @@ namespace tools
//------------------------------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------------------------------
bool wallet_rpc_server::run() bool wallet_rpc_server::run()
{ {
m_stop = false;
m_net_server.add_idle_handler([this](){ m_net_server.add_idle_handler([this](){
try { try {
m_wallet.refresh(); m_wallet.refresh();
@ -65,6 +66,14 @@ namespace tools
} }
return true; return true;
}, 20000); }, 20000);
m_net_server.add_idle_handler([this](){
if (m_stop.load(std::memory_order_relaxed))
{
send_stop_signal();
return false;
}
return true;
}, 500);
//DO NOT START THIS SERVER IN MORE THEN 1 THREADS WITHOUT REFACTORING //DO NOT START THIS SERVER IN MORE THEN 1 THREADS WITHOUT REFACTORING
return epee::http_server_impl_base<wallet_rpc_server, connection_context>::run(1, true); return epee::http_server_impl_base<wallet_rpc_server, connection_context>::run(1, true);
@ -648,8 +657,8 @@ namespace tools
try try
{ {
send_stop_signal();
m_wallet.store(); m_wallet.store();
m_stop.store(true, std::memory_order_relaxed);
} }
catch (std::exception& e) catch (std::exception& e)
{ {

View file

@ -102,5 +102,6 @@ namespace tools
wallet2& m_wallet; wallet2& m_wallet;
std::string m_port; std::string m_port;
std::string m_bind_ip; std::string m_bind_ip;
std::atomic<bool> m_stop;
}; };
} }