[REST] give an appropriate response in warmup phase
This commit is contained in:
parent
210eba9fdb
commit
78bdc8103f
@ -188,6 +188,10 @@ bool HTTPReq_REST(AcceptedConnection *conn,
|
|||||||
bool fRun)
|
bool fRun)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
std::string statusmessage;
|
||||||
|
if(RPCIsInWarmup(&statusmessage))
|
||||||
|
throw RESTERR(HTTP_SERVICE_UNAVAILABLE, "Service temporarily unavailable: "+statusmessage);
|
||||||
|
|
||||||
for (unsigned int i = 0; i < ARRAYLEN(uri_prefixes); i++) {
|
for (unsigned int i = 0; i < ARRAYLEN(uri_prefixes); i++) {
|
||||||
unsigned int plen = strlen(uri_prefixes[i].prefix);
|
unsigned int plen = strlen(uri_prefixes[i].prefix);
|
||||||
if (strURI.substr(0, plen) == uri_prefixes[i].prefix) {
|
if (strURI.substr(0, plen) == uri_prefixes[i].prefix) {
|
||||||
|
@ -28,6 +28,7 @@ enum HTTPStatusCode
|
|||||||
HTTP_FORBIDDEN = 403,
|
HTTP_FORBIDDEN = 403,
|
||||||
HTTP_NOT_FOUND = 404,
|
HTTP_NOT_FOUND = 404,
|
||||||
HTTP_INTERNAL_SERVER_ERROR = 500,
|
HTTP_INTERNAL_SERVER_ERROR = 500,
|
||||||
|
HTTP_SERVICE_UNAVAILABLE = 503,
|
||||||
};
|
};
|
||||||
|
|
||||||
//! Bitcoin RPC error codes
|
//! Bitcoin RPC error codes
|
||||||
|
@ -756,6 +756,14 @@ void SetRPCWarmupFinished()
|
|||||||
fRPCInWarmup = false;
|
fRPCInWarmup = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool RPCIsInWarmup(std::string *outStatus)
|
||||||
|
{
|
||||||
|
LOCK(cs_rpcWarmup);
|
||||||
|
if (outStatus)
|
||||||
|
*outStatus = rpcWarmupStatus;
|
||||||
|
return fRPCInWarmup;
|
||||||
|
}
|
||||||
|
|
||||||
void RPCRunHandler(const boost::system::error_code& err, boost::function<void(void)> func)
|
void RPCRunHandler(const boost::system::error_code& err, boost::function<void(void)> func)
|
||||||
{
|
{
|
||||||
if (!err)
|
if (!err)
|
||||||
|
@ -53,6 +53,9 @@ void SetRPCWarmupStatus(const std::string& newStatus);
|
|||||||
/* Mark warmup as done. RPC calls will be processed from now on. */
|
/* Mark warmup as done. RPC calls will be processed from now on. */
|
||||||
void SetRPCWarmupFinished();
|
void SetRPCWarmupFinished();
|
||||||
|
|
||||||
|
/* returns the current warmup state. */
|
||||||
|
bool RPCIsInWarmup(std::string *statusOut);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Type-check arguments; throws JSONRPCError if wrong type given. Does not check that
|
* Type-check arguments; throws JSONRPCError if wrong type given. Does not check that
|
||||||
* the right number of arguments are passed, just that any passed are the correct type.
|
* the right number of arguments are passed, just that any passed are the correct type.
|
||||||
|
Loading…
Reference in New Issue
Block a user