From 0b9e4967a04cbd3197cecf8ef6114590819aebd9 Mon Sep 17 00:00:00 2001
From: ragnarok <ragnarok>
Date: Thu, 20 Oct 2005 22:31:28 +0000
Subject: [PATCH] The rarest-first sort is stable, so randomize the
 wantedPieces list to ensure a healthy swarm when you have mostly seeders.

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

diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java
index ce4a0658ac..e1785034cd 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java
@@ -75,6 +75,7 @@ public class PeerCoordinator implements PeerListener
     for(int i = 0; i < metainfo.getPieces(); i++)
       if (!bitfield.get(i))
         wantedPieces.add(new Piece(i));
+    Collections.shuffle(wantedPieces);
 
     // Install a timer to check the uploaders.
     timer.schedule(new PeerCheckerTask(this), CHECK_PERIOD, CHECK_PERIOD);
diff --git a/apps/i2psnark/java/src/org/klomp/snark/Piece.java b/apps/i2psnark/java/src/org/klomp/snark/Piece.java
index d98421b992..817bdce83f 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/Piece.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/Piece.java
@@ -12,6 +12,7 @@ public class Piece implements Comparable {
     public Piece(int id) {
         this.id = id;
         this.peers = new HashSet();
+        this.requested = false;
     }
     
     public int compareTo(Object o) throws ClassCastException {
-- 
GitLab