summaryrefslogtreecommitdiff
path: root/src/DefaultPeerStorage.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-02-07 21:38:51 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-02-07 21:38:51 +0900
commit97fde60f3e9a0e3f2a28bcdccf6e003ac7c04740 (patch)
tree2c0f210904c2577540fe491d25e6f9e151829a41 /src/DefaultPeerStorage.cc
parent656f8cf9013b2668d3a8682bb2ba9f092d9a9732 (diff)
Added upper limit of the number of peer added by each addPeer(vector) call.
Diffstat (limited to 'src/DefaultPeerStorage.cc')
-rw-r--r--src/DefaultPeerStorage.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/DefaultPeerStorage.cc b/src/DefaultPeerStorage.cc
index 1501288d..8c8141e9 100644
--- a/src/DefaultPeerStorage.cc
+++ b/src/DefaultPeerStorage.cc
@@ -51,7 +51,10 @@
namespace aria2 {
namespace {
-const int MAX_PEER_LIST_SIZE = 1024;
+
+const size_t MAX_PEER_LIST_SIZE = 1024;
+const size_t MAX_PEER_LIST_UPDATE = 100;
+
} // namespace
DefaultPeerStorage::DefaultPeerStorage()
@@ -110,8 +113,9 @@ bool DefaultPeerStorage::addPeer(const SharedHandle<Peer>& peer) {
void DefaultPeerStorage::addPeer(const std::vector<SharedHandle<Peer> >& peers)
{
size_t added = 0;
+ size_t addMax = std::min(maxPeerListSize_, MAX_PEER_LIST_UPDATE);
for(std::vector<SharedHandle<Peer> >::const_iterator itr = peers.begin(),
- eoi = peers.end(); itr != eoi && added < maxPeerListSize_; ++itr) {
+ eoi = peers.end(); itr != eoi && added < addMax; ++itr) {
const SharedHandle<Peer>& peer = *itr;
if(isPeerAlreadyAdded(peer)) {
A2_LOG_DEBUG(fmt("Adding %s:%u is rejected because it has been already"