aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRiccardo Spagni <ric@spagni.net>2015-12-30 09:40:04 +0200
committerRiccardo Spagni <ric@spagni.net>2015-12-30 09:40:04 +0200
commitb6d41cdac14e05fbd64a705243d775a0096debe2 (patch)
tree783d304689fb49bb39f4f7ba0639dadeb5a3c382
parentMerge pull request #573 (diff)
parentwallet_rpc_server: exit async, so we reply to stop_wallet RPC (diff)
downloadmonero-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.cpp16
-rw-r--r--src/wallet/wallet_rpc_server.h1
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;
};
}