aboutsummaryrefslogtreecommitdiff
path: root/src/net.h
diff options
context:
space:
mode:
authorkazcw <keziahw@gmail.com>2014-07-16 14:31:41 -0700
committerGregory Maxwell <greg@xiph.org>2015-11-23 01:18:54 +0000
commit5029698186445bf3cd69d0e720f019c472661bff (patch)
tree7557777e2ca8f70bf5213e81fd9d49ba1993b7ae /src/net.h
parent0b0fc179ab8795463e0a0f07e989ec6f592a1f90 (diff)
downloadbitcoin-5029698186445bf3cd69d0e720f019c472661bff.tar.xz
prevent peer flooding request queue for an inv
mapAlreadyAskedFor does not keep track of which peer has a request queued for a particular tx. As a result, a peer can blind a node to a tx indefinitely by sending many invs for the same tx, and then never replying to getdatas for it. Each inv received will be placed 2 minutes farther back in mapAlreadyAskedFor, so a short message containing 10 invs would render that tx unavailable for 20 minutes. This is fixed by disallowing a peer from having more than one entry for a particular inv in mapAlreadyAskedFor at a time.
Diffstat (limited to 'src/net.h')
-rw-r--r--src/net.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/net.h b/src/net.h
index 559cdf0878..046811d54c 100644
--- a/src/net.h
+++ b/src/net.h
@@ -382,6 +382,7 @@ public:
mruset<CInv> setInventoryKnown;
std::vector<CInv> vInventoryToSend;
CCriticalSection cs_inventory;
+ std::set<uint256> setAskFor;
std::multimap<int64_t, CInv> mapAskFor;
// Ping time measurement: