summaryrefslogtreecommitdiff
path: root/src/DefaultPeerStorage.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2013-01-26 19:00:03 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2013-01-26 19:00:03 +0900
commita722500d62010b80d9ce5af91b11755a7d31589b (patch)
treea5a515536c99fa3e44281be5987411f6dbb8c01e /src/DefaultPeerStorage.cc
parent3a19b65dd77ff7a71c8ad277ec9ba3e17de7ee2d (diff)
Make DefaultPeerStorage::droppedPeers_ distinct
Diffstat (limited to 'src/DefaultPeerStorage.cc')
-rw-r--r--src/DefaultPeerStorage.cc11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/DefaultPeerStorage.cc b/src/DefaultPeerStorage.cc
index a6bb908d..95a05a8c 100644
--- a/src/DefaultPeerStorage.cc
+++ b/src/DefaultPeerStorage.cc
@@ -146,7 +146,16 @@ void DefaultPeerStorage::addPeer(const std::vector<SharedHandle<Peer> >& peers)
void DefaultPeerStorage::addDroppedPeer(const SharedHandle<Peer>& peer)
{
- // TODO Make unique
+ // Make sure that duplicated peers exist in droppedPeers_. If
+ // exists, erase older one.
+ for(std::deque<SharedHandle<Peer> >::iterator i = droppedPeers_.begin(),
+ eoi = droppedPeers_.end(); i != eoi; ++i) {
+ if((*i)->getIPAddress() == peer->getIPAddress() &&
+ (*i)->getPort() == peer->getPort()) {
+ droppedPeers_.erase(i);
+ break;
+ }
+ }
droppedPeers_.push_front(peer);
if(droppedPeers_.size() > 50) {
droppedPeers_.pop_back();