diff options
Diffstat (limited to 'src/wallet')
-rw-r--r-- | src/wallet/wallet_rpc_server.cpp | 11 | ||||
-rw-r--r-- | src/wallet/wallet_rpc_server.h | 1 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/wallet/wallet_rpc_server.cpp b/src/wallet/wallet_rpc_server.cpp index d2bbe8be4..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); @@ -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) { 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; }; } |