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;