aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2015-07-02 20:09:07 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2015-07-02 20:09:28 +0200
commitd6db1157bcab7ace13f046bdfa107b456c1dfbe3 (patch)
tree3c4206aa2948ba6a72aab519fa71b023607c3a75
parentd7ada03b8a6d3258f7558f69f916517ddce36ac3 (diff)
parent72b9452b1d5ff8761466e9810facfd50103cc63b (diff)
Merge pull request #6362
72b9452 When processing RPC commands during warmup phase, parse the request object before returning an error so that id value can be used in the response. (Forrest Voight)
-rw-r--r--src/rpcserver.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/rpcserver.cpp b/src/rpcserver.cpp
index 13b8661c65..287cfb2f13 100644
--- a/src/rpcserver.cpp
+++ b/src/rpcserver.cpp
@@ -931,13 +931,6 @@ static bool HTTPReq_JSONRPC(AcceptedConnection *conn,
if (!valRequest.read(strRequest))
throw JSONRPCError(RPC_PARSE_ERROR, "Parse error");
- // Return immediately if in warmup
- {
- LOCK(cs_rpcWarmup);
- if (fRPCInWarmup)
- throw JSONRPCError(RPC_IN_WARMUP, rpcWarmupStatus);
- }
-
string strReply;
// singleton request
@@ -1009,6 +1002,13 @@ void ServiceConnection(AcceptedConnection *conn)
UniValue CRPCTable::execute(const std::string &strMethod, const UniValue &params) const
{
+ // Return immediately if in warmup
+ {
+ LOCK(cs_rpcWarmup);
+ if (fRPCInWarmup)
+ throw JSONRPCError(RPC_IN_WARMUP, rpcWarmupStatus);
+ }
+
// Find method
const CRPCCommand *pcmd = tableRPC[strMethod];
if (!pcmd)