mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-28 06:55:50 +00:00
Merge branch 'master' of github.com:jedmccaleb/NewCoin
This commit is contained in:
@@ -90,6 +90,8 @@ void TransactionAcquire::trigger(Peer::ref peer, bool timer)
|
||||
ripple::TMGetLedger tmGL;
|
||||
tmGL.set_ledgerhash(mHash.begin(), mHash.size());
|
||||
tmGL.set_itype(ripple::liTS_CANDIDATE);
|
||||
if (getTimeouts() != 0)
|
||||
tmGL.set_querytype(ripple::qtINDIRECT);
|
||||
*(tmGL.add_nodeids()) = SHAMapNode().getRawString();
|
||||
sendRequest(tmGL, peer);
|
||||
}
|
||||
@@ -113,6 +115,8 @@ void TransactionAcquire::trigger(Peer::ref peer, bool timer)
|
||||
ripple::TMGetLedger tmGL;
|
||||
tmGL.set_ledgerhash(mHash.begin(), mHash.size());
|
||||
tmGL.set_itype(ripple::liTS_CANDIDATE);
|
||||
if (getTimeouts() != 0)
|
||||
tmGL.set_querytype(ripple::qtINDIRECT);
|
||||
BOOST_FOREACH(SHAMapNode& it, nodeIDs)
|
||||
*(tmGL.add_nodeids()) = it.getRawString();
|
||||
sendRequest(tmGL, peer);
|
||||
|
||||
32
src/Peer.cpp
32
src/Peer.cpp
@@ -1174,7 +1174,24 @@ void Peer::recvGetLedger(ripple::TMGetLedger& packet)
|
||||
{
|
||||
if (packet.has_querytype() && !packet.has_requestcookie())
|
||||
{
|
||||
// WRITEME: try to route
|
||||
cLog(lsINFO) << "Trying to route TX set request";
|
||||
std::vector<Peer::pointer> peerList = theApp->getConnectionPool().getPeerVector();
|
||||
std::vector<Peer::pointer> usablePeers;
|
||||
BOOST_FOREACH(Peer::ref peer, peerList)
|
||||
{
|
||||
if (peer->hasTxSet(txHash))
|
||||
usablePeers.push_back(peer);
|
||||
}
|
||||
if (usablePeers.empty())
|
||||
{
|
||||
cLog(lsINFO) << "Unable to route TX set request";
|
||||
return;
|
||||
}
|
||||
Peer::ref selectedPeer = usablePeers[rand() % usablePeers.size()];
|
||||
packet.set_requestcookie(getPeerId());
|
||||
selectedPeer->sendPacket(boost::make_shared<PackedMessage>(packet, ripple::mtGET_LEDGER));
|
||||
cLog(lsDEBUG) << "TX set request routed";
|
||||
return;
|
||||
}
|
||||
cLog(lsERROR) << "We do not have the map our peer wants";
|
||||
punishPeer(PP_INVALID_REQUEST);
|
||||
@@ -1332,7 +1349,18 @@ void Peer::recvLedger(ripple::TMLedgerData& packet)
|
||||
|
||||
if (packet.has_requestcookie())
|
||||
{
|
||||
// WRITEME: Route to original requester
|
||||
Peer::pointer target = theApp->getConnectionPool().getPeerById(packet.requestcookie());
|
||||
if (target)
|
||||
{
|
||||
packet.clear_requestcookie();
|
||||
target->sendPacket(boost::make_shared<PackedMessage>(packet, ripple::mtLEDGER_DATA));
|
||||
}
|
||||
else
|
||||
{
|
||||
cLog(lsINFO) << "Unable to route TX set reply";
|
||||
punishPeer(PP_UNWANTED_DATA);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (packet.type() == ripple::liTS_CANDIDATE)
|
||||
|
||||
Reference in New Issue
Block a user