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(); } /**