forked from I2P_Developers/i2p.i2p
* Tunnels:
- Build a new exploratory fallback tunnel in the BuildExecutor loop if we run out. - Don't use closest expl. tunnel as the paired tunnel for a build, use a random one instead (partially back out change from -12) - Log tweaks
This commit is contained in:
@@ -129,7 +129,7 @@ class BuildExecutor implements Runnable {
|
||||
}
|
||||
}
|
||||
if (allowed < 2) allowed = 2; // Never choke below 2 builds (but congestion may)
|
||||
if (allowed > MAX_CONCURRENT_BUILDS) allowed = MAX_CONCURRENT_BUILDS; // Never go beyond 10, that is uncharted territory (old limit was 5)
|
||||
else if (allowed > MAX_CONCURRENT_BUILDS) allowed = MAX_CONCURRENT_BUILDS; // Never go beyond 10, that is uncharted territory (old limit was 5)
|
||||
allowed = _context.getProperty("router.tunnelConcurrentBuilds", allowed);
|
||||
|
||||
// expire any REALLY old requests
|
||||
@@ -319,6 +319,11 @@ class BuildExecutor implements Runnable {
|
||||
if ( (mgr == null) || (mgr.getFreeTunnelCount() <= 0) || (mgr.getOutboundTunnelCount() <= 0) ) {
|
||||
// we don't have either inbound or outbound tunnels, so don't bother trying to build
|
||||
// non-zero-hop tunnels
|
||||
// try to kickstart it to build a fallback, otherwise we may get stuck here for a long time (minutes)
|
||||
if (mgr.getFreeTunnelCount() <= 0)
|
||||
mgr.selectInboundTunnel();
|
||||
if (mgr.getOutboundTunnelCount() <= 0)
|
||||
mgr.selectOutboundTunnel();
|
||||
synchronized (_currentlyBuilding) {
|
||||
if (!_repoll) {
|
||||
if (_log.shouldLog(Log.DEBUG))
|
||||
@@ -498,7 +503,7 @@ class BuildExecutor implements Runnable {
|
||||
*/
|
||||
public void buildComplete(PooledTunnelCreatorConfig cfg, TunnelPool pool) {
|
||||
if (_log.shouldLog(Log.DEBUG))
|
||||
_log.debug("Build complete for " + cfg);
|
||||
_log.debug("Build complete for " + cfg, new Exception());
|
||||
pool.buildComplete(cfg);
|
||||
if (cfg.getLength() > 1)
|
||||
removeFromBuilding(cfg.getReplyMessageId());
|
||||
|
@@ -133,10 +133,10 @@ abstract class BuildRequestor {
|
||||
else
|
||||
pairedTunnel = mgr.selectInboundTunnel(pool.getSettings().getDestination(), farEnd);
|
||||
if (pairedTunnel == null) {
|
||||
if (log.shouldLog(Log.INFO))
|
||||
log.info("Couldn't find a paired tunnel for " + cfg + ", fall back on exploratory tunnels for pairing");
|
||||
if (isInbound) {
|
||||
pairedTunnel = mgr.selectOutboundExploratoryTunnel(farEnd);
|
||||
// random more reliable than closest ??
|
||||
//pairedTunnel = mgr.selectOutboundExploratoryTunnel(farEnd);
|
||||
pairedTunnel = mgr.selectOutboundTunnel();
|
||||
if (pairedTunnel != null &&
|
||||
pairedTunnel.getLength() <= 1 &&
|
||||
mgr.getOutboundSettings().getLength() + mgr.getOutboundSettings().getLengthVariance() > 0) {
|
||||
@@ -146,7 +146,9 @@ abstract class BuildRequestor {
|
||||
pairedTunnel = null;
|
||||
}
|
||||
} else {
|
||||
pairedTunnel = mgr.selectInboundExploratoryTunnel(farEnd);
|
||||
// random more reliable than closest ??
|
||||
//pairedTunnel = mgr.selectInboundExploratoryTunnel(farEnd);
|
||||
pairedTunnel = mgr.selectInboundTunnel();
|
||||
if (pairedTunnel != null &&
|
||||
pairedTunnel.getLength() <= 1 &&
|
||||
mgr.getInboundSettings().getLength() + mgr.getInboundSettings().getLengthVariance() > 0) {
|
||||
@@ -154,6 +156,8 @@ abstract class BuildRequestor {
|
||||
pairedTunnel = null;
|
||||
}
|
||||
}
|
||||
if (pairedTunnel != null && log.shouldLog(Log.INFO))
|
||||
log.info("Couldn't find a paired tunnel for " + cfg + ", using exploratory tunnel");
|
||||
}
|
||||
}
|
||||
if (pairedTunnel == null) {
|
||||
|
Reference in New Issue
Block a user