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