diff --git a/history.txt b/history.txt index 4d4e6d659..070e793fc 100644 --- a/history.txt +++ b/history.txt @@ -1,5 +1,10 @@ +2016-12-01 zzz + * NetDb: Peer selection tweaks + 2016-11-27 zzz - * NetDb: Add same-port check in peer selector + * NetDb: + - Add same-port check in peer selector + - Add MTU, SSU caps, IPv6 prefix, and cost lookups 2016-11-26 zzz * NetDb: diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index cef568607..59b43357e 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,7 +18,7 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 12; + public final static long BUILD = 13; /** for example "-test" */ public final static String EXTRA = "-rc"; 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 465ecd596..6cc414246 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java @@ -171,7 +171,10 @@ class FloodfillPeerSelector extends PeerSelector { private static final int NO_FAIL_LOOKUP_OK = 75*1000; private static final int NO_FAIL_LOOKUP_GOOD = NO_FAIL_LOOKUP_OK * 3; private static final int MAX_GOOD_RESP_TIME = 5*1000; - private static final long HEARD_AGE = 48*60*60*1000L; + // TODO we need better tracking of floodfill first-heard-about times + // before we can do this. Old profiles get deleted. + //private static final long HEARD_AGE = 48*60*60*1000L; + private static final long HEARD_AGE = 60*60*1000L; private static final long INSTALL_AGE = HEARD_AGE + (60*60*1000L); /** diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java index 5b599ae6c..84876674d 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java @@ -83,7 +83,7 @@ class IterativeSearchJob extends FloodSearchJob { /** Max number of peers to query if we are ff */ private static final int TOTAL_SEARCH_LIMIT_WHEN_FF = 3; /** Extra peers to get from peer selector, as we may discard some before querying */ - private static final int EXTRA_PEERS = 2; + private static final int EXTRA_PEERS = 1; private static final int IP_CLOSE_BYTES = 3; /** TOTAL_SEARCH_LIMIT * SINGLE_SEARCH_TIME, plus some extra */ private static final int MAX_SEARCH_TIME = 30*1000; diff --git a/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java b/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java index 481cc18b6..3076857cf 100644 --- a/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java +++ b/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java @@ -1246,7 +1246,7 @@ public class ProfileOrganizer { */ private void locked_selectPeers(Map peers, int howMany, Set toExclude, Set matches, int mask) { List all = new ArrayList(peers.keySet()); - MaskedIPSet IPSet = new MaskedIPSet(8); + MaskedIPSet IPSet = new MaskedIPSet(16); // use RandomIterator to avoid shuffling the whole thing for (Iterator iter = new RandomIterator(all); (matches.size() < howMany) && iter.hasNext(); ) { Hash peer = iter.next(); diff --git a/router/java/src/net/i2p/router/util/MaskedIPSet.java b/router/java/src/net/i2p/router/util/MaskedIPSet.java index d2fb01f1a..96f18d30a 100644 --- a/router/java/src/net/i2p/router/util/MaskedIPSet.java +++ b/router/java/src/net/i2p/router/util/MaskedIPSet.java @@ -81,6 +81,8 @@ public class MaskedIPSet extends HashSet { int port = pa.getPort(); if (port > 0) add("p" + port); + if (pa.getCost() == 2 && "NTCP".equals(pa.getTransportStyle())) + add("=cost2"); } String family = pinfo.getOption("family"); if (family != null) {