From 5af96f5ccb5f723f339087aae6fcf89ea264f4ae Mon Sep 17 00:00:00 2001
From: jrandom <jrandom>
Date: Wed, 28 Jul 2004 23:28:55 +0000
Subject: [PATCH] when we really need tunnels, always build them

---
 .../i2p/router/tunnelmanager/PoolingTunnelSelector.java    | 4 ++--
 .../java/src/net/i2p/router/tunnelmanager/TunnelPool.java  | 7 +++++--
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/router/java/src/net/i2p/router/tunnelmanager/PoolingTunnelSelector.java b/router/java/src/net/i2p/router/tunnelmanager/PoolingTunnelSelector.java
index 170d25c659..ecdac3683b 100644
--- a/router/java/src/net/i2p/router/tunnelmanager/PoolingTunnelSelector.java
+++ b/router/java/src/net/i2p/router/tunnelmanager/PoolingTunnelSelector.java
@@ -61,7 +61,7 @@ class PoolingTunnelSelector {
         for (int i = outIds.size(); i < criteria.getMinimumTunnelsRequired(); i++) {
             if (_log.shouldLog(Log.WARN))
                 _log.warn("Building fake tunnels because the outbound tunnels weren't sufficient");
-            pool.buildFakeTunnels();
+            pool.buildFakeTunnels(true);
             rebuilt = true;
         }
         if (rebuilt && recurse)
@@ -106,7 +106,7 @@ class PoolingTunnelSelector {
         for (int i = tunnels.size(); i < criteria.getMinimumTunnelsRequired(); i++) {
             if (_log.shouldLog(Log.WARN))
                 _log.warn("Building fake tunnels because the inbound tunnels weren't sufficient");
-            pool.buildFakeTunnels();
+            pool.buildFakeTunnels(true);
             rebuilt = true;
         }
         if (rebuilt && recurse)
diff --git a/router/java/src/net/i2p/router/tunnelmanager/TunnelPool.java b/router/java/src/net/i2p/router/tunnelmanager/TunnelPool.java
index dd83a0f0d0..0a63ab04c5 100644
--- a/router/java/src/net/i2p/router/tunnelmanager/TunnelPool.java
+++ b/router/java/src/net/i2p/router/tunnelmanager/TunnelPool.java
@@ -470,14 +470,17 @@ class TunnelPool {
      *
      */
     public void buildFakeTunnels() {
-        if (getFreeValidTunnelCount() < 3) {
+        buildFakeTunnels(false);
+    }
+    public void buildFakeTunnels(boolean force) {
+        if (force || getFreeValidTunnelCount() < 3) {
             if (_log.shouldLog(Log.WARN))
                 _log.warn("Running low on valid inbound tunnels, building another");
             TunnelInfo inTunnelGateway = _tunnelBuilder.configureInboundTunnel(null, getPoolSettings(), true);
             RequestTunnelJob inReqJob = new RequestTunnelJob(_context, this, inTunnelGateway, true, getTunnelCreationTimeout());
             inReqJob.runJob();
         }
-        if (getOutboundValidTunnelCount() < 3) {
+        if (force || getOutboundValidTunnelCount() < 3) {
             if (_log.shouldLog(Log.WARN))
                 _log.warn("Running low on valid outbound tunnels, building another");
             TunnelInfo outTunnelGateway = _tunnelBuilder.configureOutboundTunnel(getPoolSettings(), true);
-- 
GitLab