Browse Source

Filter mempool command

0.8
Matt Corallo 12 years ago
parent
commit
c51694eb9b
  1. 13
      src/main.cpp

13
src/main.cpp

@ -3446,13 +3446,16 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
else if (strCommand == "mempool") else if (strCommand == "mempool")
{ {
std::vector<uint256> vtxid; std::vector<uint256> vtxid;
LOCK2(mempool.cs, pfrom->cs_filter);
mempool.queryHashes(vtxid); mempool.queryHashes(vtxid);
vector<CInv> vInv; vector<CInv> vInv;
for (unsigned int i = 0; i < vtxid.size(); i++) { BOOST_FOREACH(uint256& hash, vtxid) {
CInv inv(MSG_TX, vtxid[i]); CInv inv(MSG_TX, hash);
vInv.push_back(inv); if ((pfrom->pfilter && pfrom->pfilter->IsRelevantAndUpdate(mempool.lookup(hash), hash)) ||
if (i == (MAX_INV_SZ - 1)) (!pfrom->pfilter))
break; vInv.push_back(inv);
if (vInv.size() == MAX_INV_SZ)
break;
} }
if (vInv.size() > 0) if (vInv.size() > 0)
pfrom->PushMessage("inv", vInv); pfrom->PushMessage("inv", vInv);

Loading…
Cancel
Save