From 8ec3e58e273667d765785116e88af7e63f1e3ea9 Mon Sep 17 00:00:00 2001 From: sponge Date: Fri, 11 Feb 2011 11:07:33 +0000 Subject: [PATCH 1/3] I2PTunnel: fix NPE in I2PTunnelConnectClient --- .../java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java | 3 +++ history.txt | 3 +++ router/java/src/net/i2p/router/RouterVersion.java | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java index 70265a154..9cf28171f 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java @@ -169,6 +169,9 @@ public class I2PTunnelConnectClient extends I2PTunnelHTTPClientBase implements R // Use this rather than BufferedReader because we can't have readahead, // since we are passing the stream on to I2PTunnelRunner line = DataHelper.readLine(in); + if(line == null) { + line = ''; // prevent NPE, Is this what we need to do? + } line = line.trim(); if (_log.shouldLog(Log.DEBUG)) _log.debug(getPrefix(requestId) + "Line=[" + line + "]"); diff --git a/history.txt b/history.txt index bbdeb990b..ce552f5a9 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,6 @@ +2011-02-11 sponge + * I2PTunnel: fix NPE in I2PTunnelConnectClient + 2011-02-10 sponge * I2CP: fix NPE in QueuedClientConnectionRunner diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index fecba78d6..a6204817e 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 = 7; + public final static long BUILD = 8; /** for example "-test" */ public final static String EXTRA = ""; From dd2c5067aa0b585b0f3bc3e8b0200b041254a61a Mon Sep 17 00:00:00 2001 From: sponge Date: Fri, 11 Feb 2011 11:12:19 +0000 Subject: [PATCH 2/3] I2PTunnel: fix my own stupid bug in I2PTunnelConnectClient --- .../java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java | 2 +- router/java/src/net/i2p/router/RouterVersion.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java index 9cf28171f..455c170ba 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java @@ -170,7 +170,7 @@ public class I2PTunnelConnectClient extends I2PTunnelHTTPClientBase implements R // since we are passing the stream on to I2PTunnelRunner line = DataHelper.readLine(in); if(line == null) { - line = ''; // prevent NPE, Is this what we need to do? + line = ""; // prevent NPE, Is this what we need to do? } line = line.trim(); if (_log.shouldLog(Log.DEBUG)) diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index a6204817e..f2522cd4e 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 = 8; + public final static long BUILD = 9; /** for example "-test" */ public final static String EXTRA = ""; From 447156734463a3059af5a429b6cfa5f7c15e090f Mon Sep 17 00:00:00 2001 From: mathiasdm Date: Fri, 11 Feb 2011 19:12:19 +0000 Subject: [PATCH 3/3] Fixed headless issue, added -8. --- .../src/net/i2p/desktopgui/Main.java | 19 +++----- .../i2p/router/web/RouterConsoleRunner.java | 44 ++++++++++++++++++- build.xml | 1 + history.txt | 4 ++ .../src/net/i2p/router/RouterVersion.java | 2 +- 5 files changed, 56 insertions(+), 14 deletions(-) diff --git a/apps/desktopgui/src/net/i2p/desktopgui/Main.java b/apps/desktopgui/src/net/i2p/desktopgui/Main.java index 03aa216b6..8cd1ea707 100644 --- a/apps/desktopgui/src/net/i2p/desktopgui/Main.java +++ b/apps/desktopgui/src/net/i2p/desktopgui/Main.java @@ -55,19 +55,14 @@ public class Main { * Main method launching the application. */ public static void beginStartup(String[] args) { - boolean wasHeadless = Boolean.valueOf(System.getProperty("java.awt.headless")).booleanValue(); - if(wasHeadless) { - System.setProperty("java.awt.headless", "false"); - } - boolean headless_check = true; try { - // X permissions error is a java.lang.InternalError (a Throwable) - GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); - headless_check = ge.isHeadlessInstance(); - } catch (Throwable t) {} - if (wasHeadless) - System.setProperty("java.awt.headless", "true"); - if (headless_check) { + String headless = RouterManager.getRouterContext().getProperty("router.isHeadless"); + boolean isHeadless = Boolean.parseBoolean(headless); + if(isHeadless) { + return; + } + } + catch(Exception e) { return; } try { diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java index ada49d0aa..9f280ef2a 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java @@ -1,6 +1,7 @@ package net.i2p.router.web; import java.util.ArrayList; +import java.awt.GraphicsEnvironment; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; @@ -54,10 +55,51 @@ public class RouterConsoleRunner { private static final String DEFAULT_WEBAPPS_DIR = "./webapps/"; private static final String USAGE = "Bad RouterConsoleRunner arguments, check clientApp.0.args in your clients.config file! " + "Usage: [[port host[,host]] [-s sslPort [host[,host]]] [webAppsDir]]"; + private static final String PROP_HEADLESS = "router.isHeadless"; static { System.setProperty("org.mortbay.http.Version.paranoid", "true"); - System.setProperty("java.awt.headless", "true"); + + //Check if we are in a headless environment, set properties accordingly + List contexts = RouterContext.listContexts(); + if(contexts != null && contexts.size() > 0) { + RouterContext context = contexts.get(0); + String headless = context.getProperty(PROP_HEADLESS); + if(headless == null) { + /* + * Let's check if we are in a headless environment. + * We do this by setting headless to false + * and trying to get the graphics environment. + * If this fails, we should be headless. + */ + System.setProperty("java.awt.headless", "false"); + try { + GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); + ge.isHeadlessInstance(); + context.setProperty(PROP_HEADLESS, "false"); + } + catch(InternalError e) { + context.setProperty(PROP_HEADLESS, "true"); + } + context.router().setConfigSetting(PROP_HEADLESS, context.getProperty(PROP_HEADLESS)); + context.router().saveConfig(); + context.router().shutdown(0); + } + boolean isHeadless = true; + try { + isHeadless = Boolean.parseBoolean(headless); + } + catch(Exception e) { + //Incorrect setting, let's choose headless for safety + isHeadless = true; + } + if(isHeadless) { + System.setProperty("java.awt.headless", "true"); + } + else { + System.setProperty("java.awt.headless", "false"); + } + } } /** diff --git a/build.xml b/build.xml index 20616d1c2..f2413e090 100644 --- a/build.xml +++ b/build.xml @@ -97,6 +97,7 @@ + diff --git a/history.txt b/history.txt index bbdeb990b..a11f78bbd 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,7 @@ +2011-02-11 Mathiasdm + * routerconsole: fixed graphs using jrobin; and headless issue + in general: no more switches between headless and non-headless. + 2011-02-10 sponge * I2CP: fix NPE in QueuedClientConnectionRunner diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index fecba78d6..a6204817e 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 = 7; + public final static long BUILD = 8; /** for example "-test" */ public final static String EXTRA = "";