diff options
author | Riccardo Spagni <ric@spagni.net> | 2015-12-30 09:40:04 +0200 |
---|---|---|
committer | Riccardo Spagni <ric@spagni.net> | 2015-12-30 09:40:04 +0200 |
commit | b6d41cdac14e05fbd64a705243d775a0096debe2 (patch) | |
tree | 783d304689fb49bb39f4f7ba0639dadeb5a3c382 | |
parent | Merge pull request #573 (diff) | |
parent | wallet_rpc_server: exit async, so we reply to stop_wallet RPC (diff) | |
download | monero-b6d41cdac14e05fbd64a705243d775a0096debe2.tar.xz |
Merge pull request #574
61ce8d6 wallet_rpc_server: exit async, so we reply to stop_wallet RPC (moneromooo-monero)
9847db6 wallet: do not return error if incoming_transfers finds none (moneromooo-monero)
-rw-r--r-- | src/wallet/wallet_rpc_server.cpp | 16 | ||||
-rw-r--r-- | src/wallet/wallet_rpc_server.h | 1 |
2 files changed, 11 insertions, 6 deletions
diff --git a/src/wallet/wallet_rpc_server.cpp b/src/wallet/wallet_rpc_server.cpp index a1f48bd77..0c1ea48c1 100644 --- a/src/wallet/wallet_rpc_server.cpp +++ b/src/wallet/wallet_rpc_server.cpp @@ -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); @@ -605,11 +614,6 @@ namespace tools } } - if (!transfers_found) - { - return false; - } - return true; } //------------------------------------------------------------------------------------------------------------------------------ @@ -653,8 +657,8 @@ namespace tools try { - send_stop_signal(); m_wallet.store(); + m_stop.store(true, std::memory_order_relaxed); } catch (std::exception& e) { diff --git a/src/wallet/wallet_rpc_server.h b/src/wallet/wallet_rpc_server.h index a7c5077e9..97b84fcb6 100644 --- a/src/wallet/wallet_rpc_server.h +++ b/src/wallet/wallet_rpc_server.h @@ -102,5 +102,6 @@ namespace tools wallet2& m_wallet; std::string m_port; std::string m_bind_ip; + std::atomic<bool> m_stop; }; } |