From e3c222b5c1d51d7d6f805b56a6a8b63e5fef3d85 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Sat, 10 Apr 2010 15:25:57 +0000
Subject: [PATCH] Lower per-torrent conn limits for large pieces

---
 .../java/src/org/klomp/snark/PeerCoordinator.java  | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java
index 9976d44d94..67ac95e55a 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java
@@ -240,15 +240,19 @@ public class PeerCoordinator implements PeerListener
       }
   }
   
-  /** reduce max if huge pieces to keep from ooming */
+  /**
+   *  Reduce max if huge pieces to keep from ooming
+   *  Todo: should we only reduce when leeching?
+   *  @return 512K: 16; 1M: 11; 2M: 8
+   */
   private int getMaxConnections() {
     int size = metainfo.getPieceLength(0);
     int max = _util.getMaxConnections();
-    if (size <= 1024*1024)
+    if (size <= 512*1024)
       return max;
-    if (size <= 2*1024*1024)
-      return (max + 1) / 2;
-    return (max + 3) / 4;
+    if (size <= 1024*1024)
+      return (max + max + 2) / 3;
+    return (max + 1) / 2;
   }
 
   public boolean halted() { return halted; }
-- 
GitLab