From 5eaec4c841559bae130bb5c98a492043f04347b3 Mon Sep 17 00:00:00 2001
From: jrandom <jrandom>
Date: Wed, 28 Jul 2004 03:51:38 +0000
Subject: [PATCH] only recurse one time

---
 .../tunnelmanager/PoolingTunnelSelector.java       | 14 ++++++++++----
 1 file changed, 10 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 4a429f140a..170d25c659 100644
--- a/router/java/src/net/i2p/router/tunnelmanager/PoolingTunnelSelector.java
+++ b/router/java/src/net/i2p/router/tunnelmanager/PoolingTunnelSelector.java
@@ -30,6 +30,9 @@ class PoolingTunnelSelector {
     }
     
     public List selectOutboundTunnelIds(TunnelPool pool, TunnelSelectionCriteria criteria) {
+        return selectOutboundTunnelIds(pool, criteria, true);
+    }
+    public List selectOutboundTunnelIds(TunnelPool pool, TunnelSelectionCriteria criteria, boolean recurse) {
         List tunnelIds = new ArrayList(criteria.getMinimumTunnelsRequired());
         
         Set outIds = pool.getOutboundTunnels();
@@ -61,8 +64,8 @@ class PoolingTunnelSelector {
             pool.buildFakeTunnels();
             rebuilt = true;
         }
-        if (rebuilt)
-            return selectOutboundTunnelIds(pool, criteria);
+        if (rebuilt && recurse)
+            return selectOutboundTunnelIds(pool, criteria, false);
         
         List ordered = randomize(pool, tunnelIds);
         List rv = new ArrayList(criteria.getMinimumTunnelsRequired());
@@ -76,6 +79,9 @@ class PoolingTunnelSelector {
     }
     
     public List selectInboundTunnelIds(TunnelPool pool, TunnelSelectionCriteria criteria) {
+        return selectInboundTunnelIds(pool, criteria, true);
+    }
+    public List selectInboundTunnelIds(TunnelPool pool, TunnelSelectionCriteria criteria, boolean recurse) {
         List tunnels = new ArrayList(criteria.getMinimumTunnelsRequired());
         
         for (Iterator iter = pool.getFreeTunnels().iterator(); iter.hasNext(); ) {
@@ -103,8 +109,8 @@ class PoolingTunnelSelector {
             pool.buildFakeTunnels();
             rebuilt = true;
         }
-        if (rebuilt)
-            return selectInboundTunnelIds(pool, criteria);
+        if (rebuilt && recurse)
+            return selectInboundTunnelIds(pool, criteria, false);
         
         List ordered = randomize(pool, tunnels);
         List rv = new ArrayList(criteria.getMinimumTunnelsRequired());
-- 
GitLab