diff --git a/core/java/src/net/i2p/util/LookaheadInputStream.java b/core/java/src/net/i2p/util/LookaheadInputStream.java index ed698eb3acaac234aa3fa64ea1b2d31071f80b0c..67d48e87ad81dad3f4427eba09776c7f2a61c31e 100644 --- a/core/java/src/net/i2p/util/LookaheadInputStream.java +++ b/core/java/src/net/i2p/util/LookaheadInputStream.java @@ -44,7 +44,7 @@ public class LookaheadInputStream extends FilterInputStream { Arrays.fill(_footerLookahead, (byte)0x00); int footerRead = 0; while (footerRead < _footerLookahead.length) { - int read = in.read(_footerLookahead); + int read = in.read(_footerLookahead, footerRead, _footerLookahead.length - footerRead); if (read == -1) throw new IOException("EOF reading the footer lookahead"); footerRead += read; } diff --git a/core/java/src/net/i2p/util/SSLEepGet.java b/core/java/src/net/i2p/util/SSLEepGet.java index 1368a1619821f88a9896fbbac4699e0a7c9c2bb1..2e58d61638dc6246f86ec81f38977dbc7fde0b35 100644 --- a/core/java/src/net/i2p/util/SSLEepGet.java +++ b/core/java/src/net/i2p/util/SSLEepGet.java @@ -90,6 +90,8 @@ public class SSLEepGet extends EepGet { /** may be null if init failed */ private SavingTrustManager _stm; + private static final boolean _isAndroid = System.getProperty("java.vendor").contains("Android"); + /** * A new SSLEepGet with a new SSLState */ @@ -192,12 +194,23 @@ public class SSLEepGet extends EepGet { String override = System.getProperty("javax.net.ssl.keyStore"); if (override != null) success = loadCerts(new File(override), ks); - if (!success) - success = loadCerts(new File(System.getProperty("java.home"), "lib/security/jssecacerts"), ks); - if (!success) - success = loadCerts(new File(System.getProperty("java.home"), "lib/security/cacerts"), ks); + if (!success) { + if (_isAndroid) { + // thru API 13. As of API 14 (ICS), the file is gone, but + // ks.load(null, pw) will bring in the default certs? + success = loadCerts(new File(System.getProperty("java.home"), "etc/security/cacerts.bks"), ks); + } else { + success = loadCerts(new File(System.getProperty("java.home"), "lib/security/jssecacerts"), ks); + if (!success) + success = loadCerts(new File(System.getProperty("java.home"), "lib/security/cacerts"), ks); + } + } if (!success) { + try { + // must be initted + ks.load(null, "changeit".toCharArray()); + } catch (Exception e) {} _log.error("All key store loads failed, will only load local certificates"); } else if (_log.shouldLog(Log.INFO)) { int count = 0; diff --git a/history.txt b/history.txt index aef9af3e6f79cc60d434a743887465aee74af82c..63cc8abfbe3912d539db9b8b312876b4fd96e40e 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,8 @@ +2012-07-24 zzz + * LookaheadInputStream: Fix bug causing gunzip fails, esp. on Android + * Router: Don't create router.ping file on Android + * SSLEepGet: Fix on Android (ticket #668) + 2012-07-21 zzz * i2psnark: Remove dark theme * Reseed: Add new cert for cowpuncher diff --git a/router/java/src/net/i2p/router/Router.java b/router/java/src/net/i2p/router/Router.java index d97c5737b14a9ae833ec5383d6d0bac4b7ed243f..399d9fb48216e874be87cd56f79043ddc0baad1c 100644 --- a/router/java/src/net/i2p/router/Router.java +++ b/router/java/src/net/i2p/router/Router.java @@ -255,7 +255,8 @@ public class Router implements RouterClock.ClockShiftListener { // ********* Start no threads before here ********* // // // NOW we can start the ping file thread. - beginMarkingLiveliness(); + if (!System.getProperty("java.vendor").contains("Android")) + beginMarkingLiveliness(); // Apps may use this as an easy way to determine if they are in the router JVM // But context.isRouterContext() is even easier... diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 33006bcb1fcf7b29de80bcff65c8bd526b224fb9..285b64c36d6c8c56d27bc442c464c5057a7ccb8e 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 = 27; + public final static long BUILD = 28; /** for example "-test" */ public final static String EXTRA = "-rc";