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..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()); diff --git a/src/cpp/ripple/RPCHandler.cpp b/src/cpp/ripple/RPCHandler.cpp index ebf310da53..6b121d68e4 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,25 @@ 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) + { + 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"]; + } } } } 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