wallet_rpc_server: exit async, so we reply to stop_wallet RPC

Reported by saddam
pull/95/head
moneromooo-monero 9 years ago
parent 9847db6920
commit 61ce8d6fde
No known key found for this signature in database
GPG Key ID: 686F07454D6CEFC3

@ -57,6 +57,7 @@ namespace tools
//------------------------------------------------------------------------------------------------------------------------------
bool wallet_rpc_server::run()
{
m_stop = false;
m_net_server.add_idle_handler([this](){
try {
m_wallet.refresh();
@ -65,6 +66,14 @@ namespace tools
}
return true;
}, 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
return epee::http_server_impl_base<wallet_rpc_server, connection_context>::run(1, true);
@ -648,8 +657,8 @@ namespace tools
try
{
send_stop_signal();
m_wallet.store();
m_stop.store(true, std::memory_order_relaxed);
}
catch (std::exception& e)
{

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

Loading…
Cancel
Save