From bb424e4447a5b1e2f9592eed52f869426933f2c8 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Fri, 21 Nov 2014 12:22:11 +0100 Subject: [PATCH] Limit the number of new addressses to accumulate Rebased-From: 12a49cac0a561ada277e93549cae26a3123a6023 --- src/net.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/net.h b/src/net.h index cb07156bd..5c6dc3745 100644 --- a/src/net.h +++ b/src/net.h @@ -40,6 +40,8 @@ namespace boost { static const unsigned int MAX_INV_SZ = 50000; /** The maximum number of entries in mapAskFor */ static const size_t MAPASKFOR_MAX_SZ = MAX_INV_SZ; +/** The maximum number of new addresses to accumulate before announcing. */ +static const unsigned int MAX_ADDR_TO_SEND = 1000; inline unsigned int ReceiveFloodSize() { return 1000*GetArg("-maxreceivebuffer", 5*1000); } inline unsigned int SendBufferSize() { return 1000*GetArg("-maxsendbuffer", 1*1000); } @@ -400,8 +402,13 @@ public: // Known checking here is only to save space from duplicates. // SendMessages will filter it again for knowns that were added // after addresses were pushed. - if (addr.IsValid() && !setAddrKnown.count(addr)) - vAddrToSend.push_back(addr); + if (addr.IsValid() && !setAddrKnown.count(addr)) { + if (vAddrToSend.size() >= MAX_ADDR_TO_SEND) { + vAddrToSend[insecure_rand() % vAddrToSend.size()] = addr; + } else { + vAddrToSend.push_back(addr); + } + } }