Limit the number of new addressses to accumulate

Rebased-From: 12a49cac0a
This commit is contained in:
Pieter Wuille 2014-11-21 12:22:11 +01:00 committed by Wladimir J. van der Laan
parent cd5164aba2
commit bb424e4447
No known key found for this signature in database
GPG Key ID: 74810B012346C9A6

View File

@ -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,9 +402,14 @@ 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))
if (addr.IsValid() && !setAddrKnown.count(addr)) {
if (vAddrToSend.size() >= MAX_ADDR_TO_SEND) {
vAddrToSend[insecure_rand() % vAddrToSend.size()] = addr;
} else {
vAddrToSend.push_back(addr);
}
}
}
void AddInventoryKnown(const CInv& inv)