From c8647fc3a5bed89995d8b6530ce3df0ba5e267c0 Mon Sep 17 00:00:00 2001 From: zzz Date: Wed, 8 Apr 2020 14:53:08 +0000 Subject: [PATCH] i2psnark: Give peers preference to get their first pieces, to mitigate effects of large pieces and allow them to become interesting faster (ticket #2473) --- .../java/src/org/klomp/snark/PeerCheckerTask.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java index 91e21fa6f..d3a424d7d 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java +++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java @@ -184,7 +184,9 @@ class PeerCheckerTask implements Runnable // Put it at the back of the list removed.add(peer); } - else if (!peer.isInteresting() && !coordinator.completed()) + else if (!peer.isInteresting() && !coordinator.completed() && + // give new peers a better chance to get their first two pieces + (peer.completed() >= 2 || random.nextInt(4) == 0)) { // If they aren't interesting make someone else a downloader if (_log.shouldLog(Log.DEBUG)) @@ -221,7 +223,9 @@ class PeerCheckerTask implements Runnable worstdownload = download; worstDownloader = peer; } - else if (upload < worstdownload && coordinator.completed()) + else if (upload < worstdownload && coordinator.completed() && + // give new peers a better chance to get their first four pieces + (peer.completed() >= 4 || random.nextInt(8) == 0)) { // Make sure upload is good if we are seeding worstdownload = upload;