aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcoFalke <falke.marco@gmail.com>2020-05-22 15:38:48 -0400
committerMarcoFalke <falke.marco@gmail.com>2020-05-22 15:52:37 -0400
commitfa7fc5a8e0fcf9ca81e84b3631f18ae40502be60 (patch)
tree422665e4954f8f50a026e4a165ccfc35a72a8d9c
parentb5c423c48e094bd098e11c3d1f57acae7502a4da (diff)
downloadbitcoin-fa7fc5a8e0fcf9ca81e84b3631f18ae40502be60.tar.xz
rpc: factor out RpcInterruptionPoint from dumptxoutset
-rw-r--r--src/rpc/blockchain.cpp4
-rw-r--r--src/rpc/server.cpp7
-rw-r--r--src/rpc/server.h5
3 files changed, 11 insertions, 5 deletions
diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp
index ac567e16ce..80ae35f48e 100644
--- a/src/rpc/blockchain.cpp
+++ b/src/rpc/blockchain.cpp
@@ -2329,9 +2329,7 @@ UniValue dumptxoutset(const JSONRPCRequest& request)
unsigned int iter{0};
while (pcursor->Valid()) {
- if (iter % 5000 == 0 && !IsRPCRunning()) {
- throw JSONRPCError(RPC_CLIENT_NOT_CONNECTED, "Shutting down");
- }
+ if (iter % 5000 == 0) RpcInterruptionPoint();
++iter;
if (pcursor->GetKey(key) && pcursor->GetValue(coin)) {
afile << key;
diff --git a/src/rpc/server.cpp b/src/rpc/server.cpp
index 219979f095..99c649d15a 100644
--- a/src/rpc/server.cpp
+++ b/src/rpc/server.cpp
@@ -11,9 +11,9 @@
#include <util/strencodings.h>
#include <util/system.h>
-#include <boost/signals2/signal.hpp>
#include <boost/algorithm/string/classification.hpp>
#include <boost/algorithm/string/split.hpp>
+#include <boost/signals2/signal.hpp>
#include <memory> // for unique_ptr
#include <unordered_map>
@@ -309,6 +309,11 @@ bool IsRPCRunning()
return g_rpc_running;
}
+void RpcInterruptionPoint()
+{
+ if (!IsRPCRunning()) throw JSONRPCError(RPC_CLIENT_NOT_CONNECTED, "Shutting down");
+}
+
void SetRPCWarmupStatus(const std::string& newStatus)
{
LOCK(cs_rpcWarmup);
diff --git a/src/rpc/server.h b/src/rpc/server.h
index c91bf1f613..d7a04ff6e8 100644
--- a/src/rpc/server.h
+++ b/src/rpc/server.h
@@ -9,10 +9,10 @@
#include <amount.h>
#include <rpc/request.h>
+#include <functional>
#include <map>
#include <stdint.h>
#include <string>
-#include <functional>
#include <univalue.h>
@@ -29,6 +29,9 @@ namespace RPCServer
/** Query whether RPC is running */
bool IsRPCRunning();
+/** Throw JSONRPCError if RPC is not running */
+void RpcInterruptionPoint();
+
/**
* Set the RPC warmup status. When this is done, all RPC calls will error out
* immediately with RPC_IN_WARMUP.