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 4d270424bd8ad16302a6534d30a475e645857ba2..d803f2321c5f850b5ab166359992dbc336bcffe8 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)