From 71aa0cfba74055b83bf293487c76b89b7c16d975 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Wed, 31 Mar 2010 18:33:08 +0000
Subject: [PATCH]     * FloodfillPeerSelector: Adjust rankings to try to      
 improve LeaseSet lookups

---
 .../router/networkdb/kademlia/FloodfillPeerSelector.java   | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java
index 4d270424bd..d803f2321c 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java
@@ -112,7 +112,7 @@ class FloodfillPeerSelector extends PeerSelector {
     private static final int NO_FAIL_STORE_OK = 10*60*1000;
     private static final int NO_FAIL_STORE_GOOD = NO_FAIL_STORE_OK * 2;
     /** this must be longer than the max streaming timeout (60s) */
-    private static final int NO_FAIL_LOOKUP_OK = 2*60*1000;
+    private static final int NO_FAIL_LOOKUP_OK = 3*60*1000;
     private static final int NO_FAIL_LOOKUP_GOOD = NO_FAIL_LOOKUP_OK * 3;
     private static final int MAX_GOOD_RESP_TIME = 5*1000;
 
@@ -135,8 +135,11 @@ class FloodfillPeerSelector extends PeerSelector {
             maxFailRate = 100d; // disable
         }
 
+        // 8 == FNDF.MAX_TO_FLOOD + 1
+        int limit = Math.max(8, howMany);
+        limit = Math.min(limit, ffs.size());
         // split sorted list into 3 sorted lists
-        for (int i = 0; found < howMany && i < ffs.size(); i++) {
+        for (int i = 0; found < howMany && i < limit; i++) {
             Hash entry = sorted.first();
             sorted.remove(entry);
             if (entry == null)
-- 
GitLab