diff --git a/router/java/src/net/i2p/router/tunnelmanager/PoolingTunnelSelector.java b/router/java/src/net/i2p/router/tunnelmanager/PoolingTunnelSelector.java
index 170d25c6597089c5b20ccec822c78100d7dacd0f..ecdac3683b49fee30139f98e22698a8edf814250 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 dd83a0f0d0257a582084724a2a8192292996e4f1..0a63ab04c5098c37d908e9be5c689a221f7e82a0 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);