diff --git a/core/java/src/net/i2p/client/I2PSessionImpl.java b/core/java/src/net/i2p/client/I2PSessionImpl.java
index ce5f44ef4da3249084fd642470da72782cb8c041..ca193f77faa120a914ebe5f9ed5269e8433225ef 100644
--- a/core/java/src/net/i2p/client/I2PSessionImpl.java
+++ b/core/java/src/net/i2p/client/I2PSessionImpl.java
@@ -59,9 +59,14 @@ import net.i2p.util.VersionComparator;
  * Implementation of an I2P session running over TCP.  This class is NOT thread safe -
  * only one thread should send messages at any given time
  *
+ * Public only for clearCache().
+ * Except for methods definied in I2PSession and I2CPMessageEventListener,
+ * not maintained as a public API, not for external use.
+ * Use I2PClientFactory to get an I2PClient and then createSession().
+ *
  * @author jrandom
  */
-abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessageEventListener {
+public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessageEventListener {
     protected final Log _log;
     /** who we are */
     private final Destination _myDestination;
@@ -1149,6 +1154,13 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
         }
     }
 
+    /** @since 0.9.20 */
+    public static void clearCache() {
+        synchronized (_lookupCache) {
+            _lookupCache.clear();
+        }
+    }
+
     /**
      *  Blocking. Waits a max of 10 seconds by default.
      *  See lookupDest with maxWait parameter to change.
diff --git a/router/java/src/net/i2p/router/Router.java b/router/java/src/net/i2p/router/Router.java
index ea55021edc266985b8453aafdcc47eb7eb000afa..e7e8db67eac869749c771ac667e5f2820fdc0793 100644
--- a/router/java/src/net/i2p/router/Router.java
+++ b/router/java/src/net/i2p/router/Router.java
@@ -20,6 +20,7 @@ import java.util.concurrent.ConcurrentHashMap;
 
 import gnu.getopt.Getopt;
 
+import net.i2p.client.I2PSessionImpl;
 import net.i2p.crypto.SigUtil;
 import net.i2p.data.Base64;
 import net.i2p.data.Certificate;
@@ -418,6 +419,7 @@ public class Router implements RouterClock.ClockShiftListener {
         PublicKey.clearCache();
         SigningPublicKey.clearCache();
         SigUtil.clearCaches();
+        I2PSessionImpl.clearCache();
     }
 
     /**