From 2d0e8b6ec8ec5ff1087b270864ee7ec9f130af51 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 27 Nov 2010 13:43:48 +0000 Subject: [PATCH 1/8] fix configstats NPE --- .../java/src/net/i2p/router/web/ConfigStatsHandler.java | 7 ------- 1 file changed, 7 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHandler.java index 11bc0b670a..0deb159294 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHandler.java @@ -5,7 +5,6 @@ import java.util.List; import java.util.StringTokenizer; import net.i2p.stat.StatManager; -import net.i2p.util.Log; /** * Handler to deal with form submissions from the stats config form and act @@ -41,14 +40,10 @@ public class ConfigStatsHandler extends FormHandler { if (stats != null) { for (int i = 0; i < stats.length; i++) { String cur = stats[i].trim(); - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Stat: [" + cur + "]"); if ( (cur.length() > 0) && (!_stats.contains(cur)) ) _stats.add(cur); } } - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Updated stats: " + _stats); } public void setGraphList(String stats[]) { @@ -66,8 +61,6 @@ public class ConfigStatsHandler extends FormHandler { } else { _graphs = ""; } - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Updated graphs: " + _graphs); } public void setExplicitFilter(String foo) { _explicitFilter = true; } From daa4ff6308214eb775fdb09c978ead569f8773cb Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 27 Nov 2010 13:44:42 +0000 Subject: [PATCH 2/8] fix race NPE at stream close --- .../client/streaming/MessageOutputStream.java | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/apps/streaming/java/src/net/i2p/client/streaming/MessageOutputStream.java b/apps/streaming/java/src/net/i2p/client/streaming/MessageOutputStream.java index fd10d679ce..ed45972be2 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/MessageOutputStream.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/MessageOutputStream.java @@ -128,13 +128,15 @@ public class MessageOutputStream extends OutputStream { remaining -= toWrite; cur += toWrite; _valid = _buf.length; - if (_dataReceiver == null) { + // avoid NPE from race with destroy() + DataReceiver rcvr = _dataReceiver; + if (rcvr == null) { throwAnyError(); return; } if (_log.shouldLog(Log.INFO)) _log.info("write() direct valid = " + _valid); - ws = _dataReceiver.writeData(_buf, 0, _valid); + ws = rcvr.writeData(_buf, 0, _valid); _written += _valid; _valid = 0; throwAnyError(); @@ -256,8 +258,10 @@ public class MessageOutputStream extends OutputStream { if ( (_valid > 0) && (flushTime <= _context.clock().now()) ) { if (_log.shouldLog(Log.INFO)) _log.info("doFlush() valid = " + _valid); - if ( (_buf != null) && (_dataReceiver != null) ) { - ws = _dataReceiver.writeData(_buf, 0, _valid); + // avoid NPE from race with destroy() + DataReceiver rcvr = _dataReceiver; + if ( (_buf != null) && (rcvr != null) ) { + ws = rcvr.writeData(_buf, 0, _valid); _written += _valid; _valid = 0; _lastFlushed = _context.clock().now(); @@ -309,12 +313,16 @@ public class MessageOutputStream extends OutputStream { WriteStatus ws = null; if (_log.shouldLog(Log.INFO) && _valid > 0) _log.info("flush() valid = " + _valid); + + // avoid NPE from race with destroy() + DataReceiver rcvr = _dataReceiver; synchronized (_dataLock) { if (_buf == null) { _dataLock.notifyAll(); throw new IOException("closed (buffer went away)"); } - if (_dataReceiver == null) { + + if (rcvr == null) { _dataLock.notifyAll(); throwAnyError(); return; @@ -324,7 +332,7 @@ public class MessageOutputStream extends OutputStream { // Yes, flush here, inside the data lock, and do all the waitForCompletion() stuff below // (disabled) if (!wait_for_accept_only) { - ws = _dataReceiver.writeData(_buf, 0, _valid); + ws = rcvr.writeData(_buf, 0, _valid); _written += _valid; _valid = 0; locked_updateBufferSize(); @@ -336,7 +344,7 @@ public class MessageOutputStream extends OutputStream { // Skip all the waitForCompletion() stuff below, which is insanity, as of 0.8.1 // must do this outside the data lock if (wait_for_accept_only) { - flushAvailable(_dataReceiver, true); + flushAvailable(rcvr, true); return; } @@ -417,10 +425,13 @@ public class MessageOutputStream extends OutputStream { ByteArray ba = null; if (_log.shouldLog(Log.INFO) && _valid > 0) _log.info("clearData() valid = " + _valid); + + // avoid NPE from race with destroy() + DataReceiver rcvr = _dataReceiver; synchronized (_dataLock) { // flush any data, but don't wait for it - if ( (_dataReceiver != null) && (_valid > 0) && shouldFlush) - _dataReceiver.writeData(_buf, 0, _valid); + if ( (rcvr != null) && (_valid > 0) && shouldFlush) + rcvr.writeData(_buf, 0, _valid); _written += _valid; _valid = 0; From 595b56246162bb3400036679fc34ddf25bae3776 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 27 Nov 2010 13:45:09 +0000 Subject: [PATCH 3/8] prep for another config option --- router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java index 9577b2b200..49790beef7 100644 --- a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java +++ b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java @@ -60,6 +60,8 @@ public class Reseeder { public static final String PROP_PROXY_ENABLE = "router.reseedProxyEnable"; /** @since 0.8.2 */ public static final String PROP_SSL_DISABLE = "router.reseedSSLDisable"; + /** @since 0.8.2 */ + public static final String PROP_SSL_REQUIRED = "router.reseedSSLRequired"; private static final String RESEED_TIPS = _x("Ensure that nothing blocks outbound HTTP, check logs " + From df4f40f6f4a5b4a4d1416ecdec7752c9accad02c Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 27 Nov 2010 13:46:33 +0000 Subject: [PATCH 4/8] log cleanup --- core/java/src/net/i2p/client/I2PSessionImpl.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/core/java/src/net/i2p/client/I2PSessionImpl.java b/core/java/src/net/i2p/client/I2PSessionImpl.java index 783222bc95..b6fd370e24 100644 --- a/core/java/src/net/i2p/client/I2PSessionImpl.java +++ b/core/java/src/net/i2p/client/I2PSessionImpl.java @@ -577,10 +577,7 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa */ void propogateError(String msg, Throwable error) { if (_log.shouldLog(Log.ERROR)) - _log.error(getPrefix() + "Error occurred: " + msg + " - " + error.getMessage()); - if (_log.shouldLog(Log.ERROR)) - _log.error(getPrefix() + " cause", error); - + _log.error(getPrefix() + "Error occurred: " + msg, error); if (_sessionListener != null) _sessionListener.errorOccurred(this, msg, error); } From 5b951b5b4b614d667f5654b5c412652af6b202b2 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 27 Nov 2010 13:48:01 +0000 Subject: [PATCH 5/8] javadoc --- apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java index 88abf360db..71089ce735 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java @@ -55,7 +55,7 @@ public class FormHandler { /** * Call this to prevent changes using GET * - * @param the request method + * @param val the request method * @since 0.8.2 */ public void storeMethod(String val) { _method = val; } From 28b4239d08164d3f2253044b545cb7c0f4013415 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 27 Nov 2010 13:48:53 +0000 Subject: [PATCH 6/8] linkify message --- .../net/i2p/router/web/PluginUpdateHandler.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/PluginUpdateHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/PluginUpdateHandler.java index 38e8f28b00..59d729ae7e 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/PluginUpdateHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/PluginUpdateHandler.java @@ -366,8 +366,18 @@ public class PluginUpdateHandler extends UpdateHandler { } else { // start everything try { - if (PluginStarter.startPlugin(_context, appName)) - statusDone("" + _("Plugin {0} installed and started", appName) + ""); + if (PluginStarter.startPlugin(_context, appName)) { + String linkName = ConfigClientsHelper.stripHTML(props, "consoleLinkName_" + Messages.getLanguage(_context)); + if (linkName == null) + linkName = ConfigClientsHelper.stripHTML(props, "consoleLinkName"); + String linkURL = ConfigClientsHelper.stripHTML(props, "consoleLinkURL"); + String link; + if (linkName != null && linkURL != null) + link = "" + linkName + ""; + else + link = appName; + statusDone("" + _("Plugin {0} installed and started", link) + ""); + } else statusDone("" + _("Plugin {0} installed but failed to start, check logs", appName) + ""); } catch (Throwable e) { From ff828e64174c9a2a23f7de611d433ec95aa2e9a2 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 27 Nov 2010 13:50:33 +0000 Subject: [PATCH 7/8] * Build: - Add man pages to package - New updaterWithJavadoc target * Console: - Add link to javadocs if installed --- apps/routerconsole/java/build.xml | 4 ---- .../src/net/i2p/router/web/SummaryBarRenderer.java | 6 +++++- apps/routerconsole/jsp/web.xml | 5 +++++ build.xml | 11 +++++++++++ 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/apps/routerconsole/java/build.xml b/apps/routerconsole/java/build.xml index 22eadd52ad..8b08c0de86 100644 --- a/apps/routerconsole/java/build.xml +++ b/apps/routerconsole/java/build.xml @@ -93,10 +93,6 @@ - - - -