From cd8721fbdc47c2f2dbe92b1ca3fabfa27450b743 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Sat, 9 Mar 2013 11:13:18 -0800 Subject: [PATCH 1/4] Add an assert to catch a mismatch in id/hash size tables. --- src/cpp/ripple/LedgerAcquire.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/cpp/ripple/LedgerAcquire.cpp b/src/cpp/ripple/LedgerAcquire.cpp index 025046b917..1cd2ef1c48 100644 --- a/src/cpp/ripple/LedgerAcquire.cpp +++ b/src/cpp/ripple/LedgerAcquire.cpp @@ -528,6 +528,8 @@ int PeerSet::getPeerCount() const void LedgerAcquire::filterNodes(std::vector& nodeIDs, std::vector& nodeHashes, std::set& recentNodes, int max, bool aggressive) { // ask for new nodes in preference to ones we've already asked for + assert(nodeIDs.size() == nodeHashes.size()); + std::vector duplicates; duplicates.reserve(nodeIDs.size()); From 366313a3e4d421806237762cfd69f92cf186c7a5 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Sat, 9 Mar 2013 11:13:34 -0800 Subject: [PATCH 2/4] Always add a hash when we add an ID. --- src/cpp/ripple/SHAMapSync.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/cpp/ripple/SHAMapSync.cpp b/src/cpp/ripple/SHAMapSync.cpp index fb754e45f6..2ccde27f2e 100644 --- a/src/cpp/ripple/SHAMapSync.cpp +++ b/src/cpp/ripple/SHAMapSync.cpp @@ -73,6 +73,7 @@ void SHAMap::getMissingNodes(std::vector& nodeIDs, std::vector Date: Sat, 9 Mar 2013 11:42:59 -0800 Subject: [PATCH 3/4] book subscribe --- ripple2010.vcxproj | 2 ++ ripple2010.vcxproj.filters | 9 +++++++-- src/cpp/ripple/LedgerAcquire.cpp | 1 + src/cpp/ripple/RPCHandler.cpp | 14 +++++++++++--- src/js/sjcl | 2 +- 5 files changed, 22 insertions(+), 6 deletions(-) diff --git a/ripple2010.vcxproj b/ripple2010.vcxproj index 085035df94..e785bc9c3c 100644 --- a/ripple2010.vcxproj +++ b/ripple2010.vcxproj @@ -39,6 +39,7 @@ true + rippled false @@ -293,6 +294,7 @@ + Designer diff --git a/ripple2010.vcxproj.filters b/ripple2010.vcxproj.filters index 6ad621db5f..bec881141d 100644 --- a/ripple2010.vcxproj.filters +++ b/ripple2010.vcxproj.filters @@ -357,6 +357,9 @@ Source Files + + Source Files + @@ -642,13 +645,15 @@ html - - + + + + diff --git a/src/cpp/ripple/LedgerAcquire.cpp b/src/cpp/ripple/LedgerAcquire.cpp index 025046b917..e9dea3bab9 100644 --- a/src/cpp/ripple/LedgerAcquire.cpp +++ b/src/cpp/ripple/LedgerAcquire.cpp @@ -528,6 +528,7 @@ int PeerSet::getPeerCount() const void LedgerAcquire::filterNodes(std::vector& nodeIDs, std::vector& nodeHashes, std::set& recentNodes, int max, bool aggressive) { // ask for new nodes in preference to ones we've already asked for + assert(nodeHashes.size() == nodeIDs.size() ); std::vector duplicates; duplicates.reserve(nodeIDs.size()); diff --git a/src/cpp/ripple/RPCHandler.cpp b/src/cpp/ripple/RPCHandler.cpp index ebf310da53..bd543c69f5 100644 --- a/src/cpp/ripple/RPCHandler.cpp +++ b/src/cpp/ripple/RPCHandler.cpp @@ -1696,7 +1696,7 @@ Json::Value RPCHandler::doAccountTransactions(Json::Value jvRequest, int& cost) try { #endif - int vl = mNetOps->getValidatedSeq(); + unsigned int vl = mNetOps->getValidatedSeq(); ScopedUnlock su(theApp->getMasterLock()); Json::Value ret(Json::objectValue); @@ -2729,11 +2729,19 @@ Json::Value RPCHandler::doSubscribe(Json::Value jvRequest, int& cost) if(currencyIn.isNonZero()) STAmount::issuerFromString(issuerIn,(*it)["IssuerIn"].asString()); + bool bothSides=false; + if((*it).isMember("BothSides") && (*it)["BothSides"].asBool()) bothSides=true; + mNetOps->subBook(ispSub, currencyIn, currencyOut, issuerIn, issuerOut); + if(bothSides) mNetOps->subBook(ispSub, currencyOut, currencyIn, issuerOut, issuerIn); if((*it)["StateNow"].asBool()) { - //lpLedger = theApp->getLedgerMaster().getClosedLedger(); - //mNetOps->getBookPage(lpLedger, uTakerPaysCurrencyID, uTakerPaysIssuerID, uTakerGetsCurrencyID, uTakerGetsIssuerID, raTakerID.getAccountID(), false, iLimit, jvMarker, jvResult); + Ledger::pointer ledger= theApp->getLedgerMaster().getClosedLedger(); + RippleAddress raTakerID; + raTakerID.setAccountID(ACCOUNT_ONE); + const Json::Value jvMarker = Json::Value(Json::nullValue); + mNetOps->getBookPage(ledger, currencyOut, issuerOut, currencyIn, issuerIn, raTakerID.getAccountID(), false, 0, jvMarker, jvResult); + if(bothSides) mNetOps->getBookPage(ledger, currencyIn, issuerIn, currencyOut, issuerOut, raTakerID.getAccountID(), false, 0, jvMarker, jvResult); } } } diff --git a/src/js/sjcl b/src/js/sjcl index dbdef434e7..d04d0bdccd 160000 --- a/src/js/sjcl +++ b/src/js/sjcl @@ -1 +1 @@ -Subproject commit dbdef434e76c3f16835f3126a7ff1c717b1ce8af +Subproject commit d04d0bdccd986e434b98fe393e1e01286c10fc36 From 3bbfd61395274bd9c4391cc387032d6eeed91710 Mon Sep 17 00:00:00 2001 From: jed Date: Sat, 9 Mar 2013 12:27:18 -0800 Subject: [PATCH 4/4] book sub --- src/cpp/ripple/RPCHandler.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/cpp/ripple/RPCHandler.cpp b/src/cpp/ripple/RPCHandler.cpp index bd543c69f5..6b121d68e4 100644 --- a/src/cpp/ripple/RPCHandler.cpp +++ b/src/cpp/ripple/RPCHandler.cpp @@ -2741,7 +2741,13 @@ Json::Value RPCHandler::doSubscribe(Json::Value jvRequest, int& cost) raTakerID.setAccountID(ACCOUNT_ONE); const Json::Value jvMarker = Json::Value(Json::nullValue); mNetOps->getBookPage(ledger, currencyOut, issuerOut, currencyIn, issuerIn, raTakerID.getAccountID(), false, 0, jvMarker, jvResult); - if(bothSides) mNetOps->getBookPage(ledger, currencyIn, issuerIn, currencyOut, issuerOut, raTakerID.getAccountID(), false, 0, jvMarker, jvResult); + if(bothSides) + { + Json::Value tempJson(Json::objectValue); + if(jvResult.isMember("offers")) jvResult["bids"]=jvResult["offers"]; + mNetOps->getBookPage(ledger, currencyIn, issuerIn, currencyOut, issuerOut, raTakerID.getAccountID(), false, 0, jvMarker, tempJson); + if(tempJson.isMember("offers")) jvResult["asks"]=tempJson["offers"]; + } } } }