From dd0153e29a1a40e5d59480bf63f79d43c5648ce9 Mon Sep 17 00:00:00 2001 From: zzz Date: Thu, 13 Apr 2017 15:58:52 +0000 Subject: [PATCH] SSU: Publish introducer expiration (proposal 133) --- history.txt | 9 +++++++++ router/java/src/net/i2p/router/RouterVersion.java | 4 ++-- .../i2p/router/transport/udp/IntroductionManager.java | 6 +++++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/history.txt b/history.txt index 40cb88d7b3..344a6bb6ac 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,12 @@ +2017-04-13 zzz + * SSU: Publish introducer expiration (proposal 133) + +2017-04-06 zzz + * Debian: Add bash-completion scripts + +2017-04-04 zzz + * Router: Fix config dir location in Gentoo + 2017-04-02 zzz * Context: Fix ClientAppManagerImpl in AppContext * i2psnark: Fix standalone configuration for Jetty 9 diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index ea17ad55f3..421ff4f630 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,10 +18,10 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 15; + public final static long BUILD = 16; /** for example "-test" */ - public final static String EXTRA = ""; + public final static String EXTRA = "-rc"; public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA; public static void main(String args[]) { System.out.println("I2P Router version: " + FULL_VERSION); diff --git a/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java b/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java index 151c0301f4..354f9656f3 100644 --- a/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java +++ b/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java @@ -99,6 +99,7 @@ class IntroductionManager { private static final long PUNCH_CLEAN_TIME = 5*1000; /** Max for all targets per PUNCH_CLEAN_TIME */ private static final int MAX_PUNCHES = 8; + private static final long INTRODUCER_EXPIRATION = 80*60*1000L; public IntroductionManager(RouterContext ctx, UDPTransport transport) { _context = ctx; @@ -178,7 +179,8 @@ class IntroductionManager { int sz = peers.size(); start = start % sz; int found = 0; - long inactivityCutoff = _context.clock().now() - (UDPTransport.EXPIRE_TIMEOUT / 2); // 15 min + long now = _context.clock().now(); + long inactivityCutoff = now - (UDPTransport.EXPIRE_TIMEOUT / 2); // 15 min // if not too many to choose from, be less picky if (sz <= howMany + 2) inactivityCutoff -= UDPTransport.EXPIRE_TIMEOUT / 4; @@ -235,12 +237,14 @@ class IntroductionManager { // we sort them so a change in order only won't happen, and won't cause a republish Collections.sort(introducers); + String exp = Long.toString((now + INTRODUCER_EXPIRATION) / 1000); for (int i = 0; i < found; i++) { Introducer in = introducers.get(i); ssuOptions.setProperty(UDPAddress.PROP_INTRO_HOST_PREFIX + i, in.sip); ssuOptions.setProperty(UDPAddress.PROP_INTRO_PORT_PREFIX + i, in.sport); ssuOptions.setProperty(UDPAddress.PROP_INTRO_KEY_PREFIX + i, in.skey); ssuOptions.setProperty(UDPAddress.PROP_INTRO_TAG_PREFIX + i, in.stag); + ssuOptions.setProperty(UDPAddress.PROP_INTRO_EXP_PREFIX + i, exp); } // FIXME failsafe if found == 0, relax inactivityCutoff and try again?