aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory Maxwell <greg@xiph.org>2015-11-29 22:10:31 +0000
committerPieter Wuille <pieter.wuille@gmail.com>2015-11-30 12:53:48 +0100
commitd41e44c9accb3df84e0abbc602cc76b72754d382 (patch)
tree6c37aa940a06d692aa022e2647703e5fec969bcc
parentb6a0da45db8d534e7a77d1cebe382cd5d83ba9b8 (diff)
Actually only use filterInventoryKnown with MSG_TX inventory messages.
Previously this logic could erroneously filter a MSG_BLOCK inventory message.
-rw-r--r--src/main.cpp16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 98457d31e3..238e2276cc 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -5510,7 +5510,7 @@ bool SendMessages(CNode* pto, bool fSendTrickle)
vInvWait.reserve(pto->vInventoryToSend.size());
BOOST_FOREACH(const CInv& inv, pto->vInventoryToSend)
{
- if (pto->filterInventoryKnown.contains(inv.hash))
+ if (inv.type == MSG_TX && pto->filterInventoryKnown.contains(inv.hash))
continue;
// 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);
- vInv.push_back(inv);
- if (vInv.size() >= 1000)
- {
- pto->PushMessage("inv", vInv);
- vInv.clear();
- }
+ pto->PushMessage("inv", vInv);
+ vInv.clear();
}
}
pto->vInventoryToSend = vInvWait;