Actually only use filterInventoryKnown with MSG_TX inventory messages.
Previously this logic could erroneously filter a MSG_BLOCK inventory message.
This commit is contained in:
parent
b6a0da45db
commit
d41e44c9ac
1 changed files with 7 additions and 9 deletions
16
src/main.cpp
16
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,15 +5531,13 @@ bool SendMessages(CNode* pto, bool fSendTrickle)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!pto->filterInventoryKnown.contains(inv.hash))
|
pto->filterInventoryKnown.insert(inv.hash);
|
||||||
|
|
||||||
|
vInv.push_back(inv);
|
||||||
|
if (vInv.size() >= 1000)
|
||||||
{
|
{
|
||||||
pto->filterInventoryKnown.insert(inv.hash);
|
pto->PushMessage("inv", vInv);
|
||||||
vInv.push_back(inv);
|
vInv.clear();
|
||||||
if (vInv.size() >= 1000)
|
|
||||||
{
|
|
||||||
pto->PushMessage("inv", vInv);
|
|
||||||
vInv.clear();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pto->vInventoryToSend = vInvWait;
|
pto->vInventoryToSend = vInvWait;
|
||||||
|
|
Loading…
Reference in a new issue