|
|
|
@ -4994,12 +4994,13 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
@@ -4994,12 +4994,13 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
|
|
|
|
|
vector<CInv> vInv; |
|
|
|
|
BOOST_FOREACH(uint256& hash, vtxid) { |
|
|
|
|
CInv inv(MSG_TX, hash); |
|
|
|
|
CTransaction tx; |
|
|
|
|
bool fInMemPool = mempool.lookup(hash, tx); |
|
|
|
|
if (!fInMemPool) continue; // another thread removed since queryHashes, maybe...
|
|
|
|
|
if ((pfrom->pfilter && pfrom->pfilter->IsRelevantAndUpdate(tx)) || |
|
|
|
|
(!pfrom->pfilter)) |
|
|
|
|
vInv.push_back(inv); |
|
|
|
|
if (pfrom->pfilter) { |
|
|
|
|
CTransaction tx; |
|
|
|
|
bool fInMemPool = mempool.lookup(hash, tx); |
|
|
|
|
if (!fInMemPool) continue; // another thread removed since queryHashes, maybe...
|
|
|
|
|
if (!pfrom->pfilter->IsRelevantAndUpdate(tx)) continue; |
|
|
|
|
} |
|
|
|
|
vInv.push_back(inv); |
|
|
|
|
if (vInv.size() == MAX_INV_SZ) { |
|
|
|
|
pfrom->PushMessage("inv", vInv); |
|
|
|
|
vInv.clear(); |
|
|
|
|