diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2015-12-01 08:56:43 +0100 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@gmail.com> | 2015-12-01 09:02:33 +0100 |
commit | 1b5118bfa0d94dbc0f3d7803c3e68626b0a694ee (patch) | |
tree | 7115cda554e234eb5fea42a68f1c71a6a4e4bfe3 /src/net.cpp | |
parent | c143c499c85bbe99e3036de21eeffb73d61cd265 (diff) | |
parent | ebb25f4c23adbcb55796c402bafd6064a136f16f (diff) |
Merge pull request #7079
ebb25f4 Limit setAskFor and retire requested entries only when a getdata returns. (Gregory Maxwell)
5029698 prevent peer flooding request queue for an inv (kazcw)
Diffstat (limited to 'src/net.cpp')
-rw-r--r-- | src/net.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/net.cpp b/src/net.cpp index abc7cbb8f4..e5659efc01 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -2407,8 +2407,12 @@ CNode::~CNode() void CNode::AskFor(const CInv& inv) { - if (mapAskFor.size() > MAPASKFOR_MAX_SZ) + if (mapAskFor.size() > MAPASKFOR_MAX_SZ || setAskFor.size() > SETASKFOR_MAX_SZ) return; + // a peer may not have multiple non-responded queue positions for a single inv item + if (!setAskFor.insert(inv.hash).second) + return; + // We're using mapAskFor as a priority queue, // the key is the earliest time the request can be sent int64_t nRequestTime; |