From cf7efcada8eb6b92294800afe239cb9a8038e968 Mon Sep 17 00:00:00 2001
From: zzz <zzz@i2pmail.org>
Date: Sun, 17 Apr 2022 09:45:40 -0400
Subject: [PATCH] I2CP: Soft restart fixes part 3

Remove low-level I2CP reconnector
as it may result in duplicate destinations after
higher-level (i2ptunnel) or application-layer reconnections
Root cause identified by BiglyBT
Gitlab issue #350
---
 .../client/impl/DisconnectMessageHandler.java | 20 ++-----------------
 1 file changed, 2 insertions(+), 18 deletions(-)

diff --git a/core/java/src/net/i2p/client/impl/DisconnectMessageHandler.java b/core/java/src/net/i2p/client/impl/DisconnectMessageHandler.java
index 7716dbb39e..525916e490 100644
--- a/core/java/src/net/i2p/client/impl/DisconnectMessageHandler.java
+++ b/core/java/src/net/i2p/client/impl/DisconnectMessageHandler.java
@@ -32,23 +32,7 @@ class DisconnectMessageHandler extends HandlerImpl {
         String reason = ((DisconnectMessage)message).getReason();
         session.propogateError(reason, new I2PSessionException("Disconnect Message received: " + reason));
         session.destroySession(false);
-        if (reason.contains("restart")) {
-            Thread t = new I2PAppThread(new Reconnector(session), "Reconnect " + session, true);
-            t.start();
-        }
-    }
-
-    /** @since 0.8.8 */
-    private static class Reconnector implements Runnable {
-        private final I2PSessionImpl _session;
-
-        public Reconnector(I2PSessionImpl session) {
-             _session = session;
-        }
-
-        public void run() {
-            try { Thread.sleep(40*1000); } catch (InterruptedException ie) {}
-            _session.reconnect();
-        }
+        // Higher layers (only) must do the reconnect, to prevent dup destinations
+        //if (reason.contains("restart")) ...
     }
 }
-- 
GitLab