From 8458e4e0af9bded6898f55d8928bf8754c20f94c Mon Sep 17 00:00:00 2001
From: ragnarok <ragnarok>
Date: Thu, 20 Oct 2005 23:28:32 +0000
Subject: [PATCH] Don't count peers we can't connect to for rarest-first
 calculations.

---
 apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java | 6 ++++++
 apps/i2psnark/java/src/org/klomp/snark/Piece.java           | 1 +
 2 files changed, 7 insertions(+)

diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java
index e1785034cd..9dbe74836d 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java
@@ -511,6 +511,12 @@ public class PeerCoordinator implements PeerListener
           {
             // Unchoke some random other peer
             unchokePeer();
+            
+            // Don't count disconnected peers for the rarest-first calculations
+            for(Iterator iter = wantedPieces.iterator(); iter.hasNext(); ) {
+                Piece piece = (Piece)iter.next();
+                piece.removePeer(peer);                
+            }
           }
       }
 
diff --git a/apps/i2psnark/java/src/org/klomp/snark/Piece.java b/apps/i2psnark/java/src/org/klomp/snark/Piece.java
index 817bdce83f..c6189eb634 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/Piece.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/Piece.java
@@ -31,6 +31,7 @@ public class Piece implements Comparable {
     public int getId() { return this.id; }
     public Set getPeers() { return this.peers; }
     public boolean addPeer(Peer peer) { return this.peers.add(peer.getPeerID()); }
+    public boolean removePeer(Peer peer) { return this.peers.remove(peer.getPeerID()); }
     public boolean isRequested() { return this.requested; }
     public void setRequested(boolean requested) { this.requested = requested; } 
 }
-- 
GitLab