diff --git a/core/java/src/net/i2p/crypto/KeyGenerator.java b/core/java/src/net/i2p/crypto/KeyGenerator.java index 6a087c50a9..56f9346836 100644 --- a/core/java/src/net/i2p/crypto/KeyGenerator.java +++ b/core/java/src/net/i2p/crypto/KeyGenerator.java @@ -116,11 +116,7 @@ public final class KeyGenerator { /** @since 0.9.8 */ private static final boolean DEFAULT_USE_LONG_EXPONENT = - NativeBigInteger.isNative() && - SystemVersion.is64Bit() && - !SystemVersion.isGNU() && - !SystemVersion.isApache() && - !SystemVersion.isARM(); + !SystemVersion.isSlow(); /** * @deprecated use getElGamalExponentSize() which allows override in the properties diff --git a/core/java/src/net/i2p/util/SystemVersion.java b/core/java/src/net/i2p/util/SystemVersion.java index 3c1880f2d4..14774cac1a 100644 --- a/core/java/src/net/i2p/util/SystemVersion.java +++ b/core/java/src/net/i2p/util/SystemVersion.java @@ -39,6 +39,7 @@ public abstract class SystemVersion { private static final boolean _is64; private static final boolean _hasWrapper = System.getProperty("wrapper.version") != null; private static final boolean _isLinuxService; + private static final boolean _isSlow; private static final boolean _oneDotSix; private static final boolean _oneDotSeven; @@ -69,6 +70,7 @@ public abstract class SystemVersion { _isLinuxService = !_isWin && !_isMac && !_isAndroid && (DAEMON_USER.equals(System.getProperty("user.name")) || (_isGentoo && GENTOO_USER.equals(System.getProperty("user.name")))); + _isSlow = _isAndroid || _isApache || _isArm || _isGNU || getMaxMemory() < 48*1024*1024L; int sdk = 0; if (_isAndroid) { @@ -153,6 +155,18 @@ public abstract class SystemVersion { return _isX86; } + /** + * Our best guess on whether this is a slow architecture / OS / JVM, + * using some simple heuristics. + * + * @since 0.9.30 + */ + public static boolean isSlow() { + // we don't put the NBI call in the static field, + // to prevent a circular initialization with NBI. + return _isSlow || !NativeBigInteger.isNative(); + } + /** * Better than (new VersionComparator()).compare(System.getProperty("java.version"), "1.6") >= 0 * as it handles Android also, where java.version = "0". @@ -290,6 +304,7 @@ public abstract class SystemVersion { System.out.println("Linux Svc: " + isLinuxService()); System.out.println("Mac : " + isMac()); System.out.println("OpenJDK : " + isOpenJDK()); + System.out.println("Slow : " + isSlow()); System.out.println("Windows : " + isWindows()); System.out.println("Wrapper : " + hasWrapper()); System.out.println("x86 : " + isX86()); diff --git a/history.txt b/history.txt index da4feb31e7..108934a31a 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,10 @@ +2017-03-18 zzz + * Addressbook (ticket #1966): + - Build as jar, not war + - Put empty war in updater + - Move Servlet starter to SusiDNS + - Skip war in RouterConsoleRunner + 2017-03-14 zzz * Blockfile: Fix specified-destination deletion from the correct book * i2ptunnel: diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index c10128fe62..fecba78d69 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 = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 6; + public final static long BUILD = 7; /** for example "-test" */ public final static String EXTRA = ""; diff --git a/router/java/src/net/i2p/router/TunnelPoolSettings.java b/router/java/src/net/i2p/router/TunnelPoolSettings.java index c7377629d3..6e5152f9e3 100644 --- a/router/java/src/net/i2p/router/TunnelPoolSettings.java +++ b/router/java/src/net/i2p/router/TunnelPoolSettings.java @@ -65,10 +65,7 @@ public class TunnelPoolSettings { public static final int DEFAULT_DURATION = 10*60*1000; //public static final int DEFAULT_LENGTH = SystemVersion.isAndroid() ? 2 : 3; - private static final boolean isSlow = SystemVersion.isGNU() || - SystemVersion.isARM() || - SystemVersion.isApache() || - !NativeBigInteger.isNative(); + private static final boolean isSlow = SystemVersion.isSlow(); /** client only */ private static final int DEFAULT_IB_LENGTH = 3;