Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Handle case when active_peers is empty.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Sun, 20 Aug 2017 15:52:31 +0000 (17:52 +0200)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Sun, 20 Aug 2017 15:52:31 +0000 (17:52 +0200)
examples/s4u/app-bittorrent/s4u_peer.cpp

index 0b03bdb..a9c38f8 100644 (file)
@@ -546,8 +546,13 @@ void Peer::updateChokedPeers()
   round_                  = (round_ + 1) % 3;
   Connection* chosen_peer = nullptr;
   // select first active peer and remove it from the set
-  Connection* choked_peer = *(active_peers.begin());
-  active_peers.erase(choked_peer);
+  Connection* choked_peer;
+  if (active_peers.empty()) {
+    choked_peer = nullptr;
+  } else {
+    choked_peer = *active_peers.begin();
+    active_peers.erase(choked_peer);
+  }
 
   /**If we are currently seeding, we unchoke the peer which has been unchoked the last time.*/
   if (hasFinished()) {