diff --git a/history.txt b/history.txt index f95a13ef824bf304ed2c360673d9468338bae103..8dd4aedd7802e9830688751fed75e3b72ddc3080 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,20 @@ +2022-04-14 zzz + * Startup: Don't set our RI loaded from disk if too old + +2022-04-13 zzz + * Router: + - Reset uptime on soft restart + - Don't rekey after failure to store our RI due to clock skew + - Change comm system state during soft restart + +2022-04-12 zzz + * Console: Fix Sybil closest hash tabs + * Transport: Fix UPnP deadlock + * Tunnels: Don't build client tunnels less than min length + +2022-04-11 zzz + * I2CP: Fix external I2CP broken when session ID is 0 + 2022-04-05 zzz * SSU2: Fragmented Session Confirmed diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 37a65a7631f8df6804d422c4394492f24c10a9dc..2f628a65d0a4a594c3296e2acb9af5c063fbabc2 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 = "Git"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 13; + public final static long BUILD = 14; /** for example "-test" */ public final static String EXTRA = ""; diff --git a/router/java/src/net/i2p/router/startup/LoadRouterInfoJob.java b/router/java/src/net/i2p/router/startup/LoadRouterInfoJob.java index 8ff2f889274119789788519970786f124927a5da..313531fdeb034455f7b1992cca13aff723b74599 100644 --- a/router/java/src/net/i2p/router/startup/LoadRouterInfoJob.java +++ b/router/java/src/net/i2p/router/startup/LoadRouterInfoJob.java @@ -131,6 +131,17 @@ class LoadRouterInfoJob extends JobImpl { fis1 = null; rif.delete(); } + if (_us != null) { + long now = getContext().clock().now(); + long riTime = _us.getPublished(); + if (riTime > now || now - riTime > 45*60*1000) { + // prevent netdb store failure and rekey + _us = null; + try { fis1.close(); } catch (IOException ioe2) {} + fis1 = null; + rif.delete(); + } + } } if (keys2Exist || keysExist) {