More strict and better diagnostics for RPC subscribe.

This commit is contained in:
Arthur Britto
2013-02-27 18:43:06 -08:00
parent 543fbf269a
commit 235c3c3eb9

View File

@@ -2499,6 +2499,8 @@ Json::Value RPCHandler::doSubscribe(Json::Value jvRequest)
if (!mInfoSub && !jvRequest.isMember("url")) if (!mInfoSub && !jvRequest.isMember("url"))
{ {
// Must be a JSON-RPC call. // Must be a JSON-RPC call.
cLog(lsINFO) << boost::str(boost::format("doSubscribe: RPC subscribe requires a url"));
return rpcError(rpcINVALID_PARAMS); return rpcError(rpcINVALID_PARAMS);
} }
@@ -2535,7 +2537,17 @@ Json::Value RPCHandler::doSubscribe(Json::Value jvRequest)
ispSub = mInfoSub; ispSub = mInfoSub;
} }
if (jvRequest.isMember("streams")) if (!jvRequest.isMember("streams"))
{
nothing();
}
else if (!jvRequest["streams"].isArray())
{
cLog(lsINFO) << boost::str(boost::format("doSubscribe: streams requires an array."));
return rpcError(rpcINVALID_PARAMS);
}
else
{ {
for (Json::Value::iterator it = jvRequest["streams"].begin(); it != jvRequest["streams"].end(); it++) for (Json::Value::iterator it = jvRequest["streams"].begin(); it != jvRequest["streams"].end(); it++)
{ {
@@ -2550,12 +2562,10 @@ Json::Value RPCHandler::doSubscribe(Json::Value jvRequest)
else if (streamName=="ledger") else if (streamName=="ledger")
{ {
mNetOps->subLedger(ispSub, jvResult); mNetOps->subLedger(ispSub, jvResult);
} }
else if (streamName=="transactions") else if (streamName=="transactions")
{ {
mNetOps->subTransactions(ispSub); mNetOps->subTransactions(ispSub);
} }
else if (streamName=="rt_transactions") else if (streamName=="rt_transactions")
{ {