Bläddra i källkod

Make DefaultPeerStorage::droppedPeers_ distinct

Tatsuhiro Tsujikawa 12 år sedan
förälder
incheckning
a722500d62
1 ändrade filer med 10 tillägg och 1 borttagningar
  1. 10 1
      src/DefaultPeerStorage.cc

+ 10 - 1
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();