diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index a59ef44655..42696da25b 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -1863,6 +1863,14 @@ public class SnarkManager implements CompleteListener { private final Snark snark; public ThreadedStarter(Snark s) { snark = s; } public void run() { + try { + run2(); + } catch (Exception e) { + _log.error("Error starting", e); + } + } + + private void run2() { if (snark != null) { if (snark.isStopped()) snark.startTorrent(); diff --git a/core/java/src/net/i2p/client/I2PSessionImpl.java b/core/java/src/net/i2p/client/I2PSessionImpl.java index fc415b983b..19c130266f 100644 --- a/core/java/src/net/i2p/client/I2PSessionImpl.java +++ b/core/java/src/net/i2p/client/I2PSessionImpl.java @@ -309,11 +309,14 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa continue; } String val = options.getProperty(key); - if ((key.length() > 255) || (val.length() > 255)) { + // not serializing (no limit) in router ctx + // fixme, bytes could still be over 255 (unlikely) + if ((!_context.isRouterContext()) && + (key.length() > 255 || val.length() > 255)) { if (_log.shouldLog(Log.WARN)) - _log.warn(getPrefix() + "Not passing on property [" + _log.warn("Not passing on property [" + key - + "] in the session configuration as the value is too long (max = 255): " + + "] in the session config, key or value is too long (max = 255): " + val); } else { rv.setProperty(key, val); diff --git a/core/java/src/net/i2p/util/I2PThread.java b/core/java/src/net/i2p/util/I2PThread.java index 477568f691..ac52b96d60 100644 --- a/core/java/src/net/i2p/util/I2PThread.java +++ b/core/java/src/net/i2p/util/I2PThread.java @@ -92,8 +92,12 @@ public class I2PThread extends Thread { t.printStackTrace(); } ****/ - if (t instanceof OutOfMemoryError) + if (t instanceof OutOfMemoryError) { fireOOM((OutOfMemoryError)t); + } else { + System.out.println ("Thread terminated unexpectedly: " + getName()); + t.printStackTrace(); + } } // This creates a new I2PAppContext after it was deleted // in Router.finalShutdown() via RouterContext.killGlobalContext() diff --git a/history.txt b/history.txt index 80b774df48..53c91d5e93 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,10 @@ +2012-07-21 zzz + * I2CP: + - Don't NPE when loglevel=warn + - Don't enforce property length limits when inside router JVM + * I2PSnark: Log uncaught error in ThreadedStarter to router log + * I2PThread: Log uncaught error to wrapper log + 2012-07-20 zzz Prop from i2p.i2p.zzz.ipv6: * Addresses: diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index f6e6df3a5c..4e28a2c8d2 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 = 4; + public final static long BUILD = 5; /** for example "-test" */ public final static String EXTRA = ""; diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java index dce1f34854..f6b7cdd217 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java +++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java @@ -1173,10 +1173,9 @@ public class NTCPTransport extends TransportImpl { if (!peers.isEmpty()) { // buf.append("