From 235c3c3eb9e546db84d639a8e2ffcbb70972784e Mon Sep 17 00:00:00 2001 From: Arthur Britto Date: Wed, 27 Feb 2013 18:43:06 -0800 Subject: [PATCH] More strict and better diagnostics for RPC subscribe. --- src/cpp/ripple/RPCHandler.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/cpp/ripple/RPCHandler.cpp b/src/cpp/ripple/RPCHandler.cpp index f63fa88f1..9af64a354 100644 --- a/src/cpp/ripple/RPCHandler.cpp +++ b/src/cpp/ripple/RPCHandler.cpp @@ -2499,6 +2499,8 @@ Json::Value RPCHandler::doSubscribe(Json::Value jvRequest) if (!mInfoSub && !jvRequest.isMember("url")) { // Must be a JSON-RPC call. + cLog(lsINFO) << boost::str(boost::format("doSubscribe: RPC subscribe requires a url")); + return rpcError(rpcINVALID_PARAMS); } @@ -2535,7 +2537,17 @@ Json::Value RPCHandler::doSubscribe(Json::Value jvRequest) 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++) { @@ -2550,12 +2562,10 @@ Json::Value RPCHandler::doSubscribe(Json::Value jvRequest) else if (streamName=="ledger") { mNetOps->subLedger(ispSub, jvResult); - } else if (streamName=="transactions") { mNetOps->subTransactions(ispSub); - } else if (streamName=="rt_transactions") {