diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelClientBase.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelClientBase.java index 4797901be4..54bde4b264 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelClientBase.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelClientBase.java @@ -209,8 +209,24 @@ public abstract class I2PTunnelClientBase extends I2PTunnelTask implements Runna props.putAll(System.getProperties()); else props.putAll(tunnel.getClientOptions()); - I2PSocketManager sockManager = I2PSocketManagerFactory.createManager(tunnel.host, Integer.parseInt(tunnel.port), props); - if (sockManager == null) return null; + int portNum = 7654; + if (tunnel.port != null) { + try { + portNum = Integer.parseInt(tunnel.port); + } catch (NumberFormatException nfe) { + _log.log(Log.CRIT, "Invalid port specified [" + tunnel.port + "], reverting to " + portNum); + } + } + + I2PSocketManager sockManager = null; + while (sockManager == null) { + sockManager = I2PSocketManagerFactory.createManager(tunnel.host, portNum, props); + + if (sockManager == null) { + _log.log(Log.CRIT, "Unable to create socket manager"); + try { Thread.sleep(10*1000); } catch (InterruptedException ie) {} + } + } sockManager.setName("Client"); return sockManager; } diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelServer.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelServer.java index d0497fbfd3..2add864123 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelServer.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelServer.java @@ -75,9 +75,18 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable { I2PClient client = I2PClientFactory.createClient(); Properties props = new Properties(); props.putAll(getTunnel().getClientOptions()); + int portNum = 7654; + if (getTunnel().port != null) { + try { + portNum = Integer.parseInt(getTunnel().port); + } catch (NumberFormatException nfe) { + _log.log(Log.CRIT, "Invalid port specified [" + getTunnel().port + "], reverting to " + portNum); + } + } + while (sockMgr == null) { synchronized (slock) { - sockMgr = I2PSocketManagerFactory.createManager(privData, getTunnel().host, Integer.parseInt(getTunnel().port), + sockMgr = I2PSocketManagerFactory.createManager(privData, getTunnel().host, portNum, props); } diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java index f13a3812e1..ec86e18d83 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java @@ -258,8 +258,16 @@ public class TunnelController implements Logging { if ("localhost".equals(_tunnel.host)) _tunnel.host = "127.0.0.1"; String port = getI2CPPort(); - if ( (port != null) && (port.length() > 0) ) - _tunnel.port = port; + if ( (port != null) && (port.length() > 0) ) { + try { + int portNum = Integer.parseInt(port); + _tunnel.port = String.valueOf(portNum); + } catch (NumberFormatException nfe) { + _tunnel.port = "7654"; + } + } else { + _tunnel.port = "7654"; + } } public void stopTunnel() { diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java index e72fe61666..9e87082e71 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java @@ -36,14 +36,6 @@ public class EditBean extends IndexBean { } } - public String getInternalType(int tunnel) { - TunnelController tun = getController(tunnel); - if (tun != null) - return tun.getType(); - else - return ""; - } - public String getTargetHost(int tunnel) { TunnelController tun = getController(tunnel); if (tun != null) diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java index 2989dcf7c3..cff2cd6707 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java @@ -311,6 +311,14 @@ public class IndexBean { else return internalType; } + public String getInternalType(int tunnel) { + TunnelController tun = getController(tunnel); + if (tun != null) + return tun.getType(); + else + return ""; + } + public String getClientInterface(int tunnel) { TunnelController tun = getController(tunnel); if (tun != null) @@ -532,8 +540,10 @@ public class IndexBean { config.setProperty("description", _description); if (_i2cpHost != null) config.setProperty("i2cpHost", _i2cpHost); - if (_i2cpPort != null) + if ( (_i2cpPort != null) && (_i2cpPort.trim().length() > 0) ) config.setProperty("i2cpPort", _i2cpPort); + else + config.setProperty("i2cpPort", "7654"); if (_customOptions != null) { StringTokenizer tok = new StringTokenizer(_customOptions); diff --git a/apps/i2ptunnel/jsp/index.jsp b/apps/i2ptunnel/jsp/index.jsp index 6aadf69a86..01272951c8 100644 --- a/apps/i2ptunnel/jsp/index.jsp +++ b/apps/i2ptunnel/jsp/index.jsp @@ -118,6 +118,9 @@ case IndexBean.RUNNING: %>Running [STOP]<% + if ("httpserver".equals(indexBean.getInternalType(curServer))) { +%> (preview)<% + } break; case IndexBean.NOT_RUNNING: %>Not Running diff --git a/history.txt b/history.txt index c9a83c1f55..3551d02014 100644 --- a/history.txt +++ b/history.txt @@ -1,4 +1,9 @@ -$Id: history.txt,v 1.186 2005/04/03 07:50:12 jrandom Exp $ +$Id: history.txt,v 1.187 2005/04/05 11:06:16 jrandom Exp $ + +2005-04-05 jrandom + * Retry I2PTunnel startup if we are unable to build a socketManager for a + client or httpclient tunnel. + * Add some basic sanity checking on the I2CP settings (thanks duck!) 2005-04-05 jrandom * After a successfull netDb search for a leaseSet, republish it to all of diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index e339353e4c..a083decd57 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -15,9 +15,9 @@ import net.i2p.CoreVersion; * */ public class RouterVersion { - public final static String ID = "$Revision: 1.179 $ $Date: 2005/04/03 07:50:12 $"; + public final static String ID = "$Revision: 1.180 $ $Date: 2005/04/05 11:06:15 $"; public final static String VERSION = "0.5.0.5"; - public final static long BUILD = 4; + public final static long BUILD = 5; public static void main(String args[]) { System.out.println("I2P Router version: " + VERSION); System.out.println("Router ID: " + RouterVersion.ID); diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java index 8a3b53d26e..faab7b5af5 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java @@ -475,7 +475,7 @@ public class TunnelPool { int added = refreshBuilders(); if ( (added > 0) && (_log.shouldLog(Log.WARN)) ) _log.warn("Passive rebuilding a tunnel for " + TunnelPool.this.toString()); - requeue(60*1000); + requeue(30*1000); } } } diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java index d7b0e6701d..1691ec1a4a 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java @@ -269,8 +269,10 @@ public class TunnelPoolManager implements TunnelManagerFacade { synchronized (this) { if (_outstandingBuilds >= _maxOutstandingBuilds) { // ok, as a failsafe, always let one through - _outstandingBuilds++; - return 1; + // nah, its failsafe for a reason. fix the cause. + //_outstandingBuilds++; + //return 1; + return 0; } if (_outstandingBuilds + wanted < _maxOutstandingBuilds) { _outstandingBuilds += wanted;