From dda25bf1ed25aeb699c2161aa43ceac2691b7f3b Mon Sep 17 00:00:00 2001
From: zzz <zzz@i2pmail.org>
Date: Thu, 14 Apr 2022 08:25:16 -0400
Subject: [PATCH] Router: Restart fixes part 2

Don't set our RI loaded from disk if too old
Rekeying was prevented by previous checkin,
but this fixes root cause
---
 history.txt                                     | 17 +++++++++++++++++
 .../java/src/net/i2p/router/RouterVersion.java  |  2 +-
 .../i2p/router/startup/LoadRouterInfoJob.java   | 11 +++++++++++
 3 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/history.txt b/history.txt
index f95a13ef82..8dd4aedd78 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 37a65a7631..2f628a65d0 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 8ff2f88927..313531fdeb 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) {
-- 
GitLab