Browse Source

Actually only use filterInventoryKnown with MSG_TX inventory messages.

Previously this logic could erroneously filter a MSG_BLOCK inventory message.
0.13
Gregory Maxwell 9 years ago committed by Pieter Wuille
parent
commit
d41e44c9ac
  1. 6
      src/main.cpp

6
src/main.cpp

@ -5510,7 +5510,7 @@ bool SendMessages(CNode* pto, bool fSendTrickle)
vInvWait.reserve(pto->vInventoryToSend.size()); vInvWait.reserve(pto->vInventoryToSend.size());
BOOST_FOREACH(const CInv& inv, pto->vInventoryToSend) BOOST_FOREACH(const CInv& inv, pto->vInventoryToSend)
{ {
if (pto->filterInventoryKnown.contains(inv.hash)) if (inv.type == MSG_TX && pto->filterInventoryKnown.contains(inv.hash))
continue; continue;
// trickle out tx inv to protect privacy // trickle out tx inv to protect privacy
@ -5531,9 +5531,8 @@ bool SendMessages(CNode* pto, bool fSendTrickle)
} }
} }
if (!pto->filterInventoryKnown.contains(inv.hash))
{
pto->filterInventoryKnown.insert(inv.hash); pto->filterInventoryKnown.insert(inv.hash);
vInv.push_back(inv); vInv.push_back(inv);
if (vInv.size() >= 1000) if (vInv.size() >= 1000)
{ {
@ -5541,7 +5540,6 @@ bool SendMessages(CNode* pto, bool fSendTrickle)
vInv.clear(); vInv.clear();
} }
} }
}
pto->vInventoryToSend = vInvWait; pto->vInventoryToSend = vInvWait;
} }
if (!vInv.empty()) if (!vInv.empty())

Loading…
Cancel
Save