From 345c64ebafda661acdce44afb600df3959f140db Mon Sep 17 00:00:00 2001
From: zzz <zzz@i2pmail.org>
Date: Tue, 12 Apr 2022 09:06:00 -0400
Subject: [PATCH] Tunnels: Don't build client tunnels less than min length

even if we don't have enough peers
---
 .../router/tunnel/pool/ClientPeerSelector.java  | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/router/java/src/net/i2p/router/tunnel/pool/ClientPeerSelector.java b/router/java/src/net/i2p/router/tunnel/pool/ClientPeerSelector.java
index 7a537c5e45..f1d726d198 100644
--- a/router/java/src/net/i2p/router/tunnel/pool/ClientPeerSelector.java
+++ b/router/java/src/net/i2p/router/tunnel/pool/ClientPeerSelector.java
@@ -233,14 +233,23 @@ class ClientPeerSelector extends TunnelPeerSelector {
                 matches.remove(ctx.routerHash());
                 rv.addAll(matches);
             }
+            if (rv.size() < length) {
+                // not enough peers to build the requested size
+                // client tunnels do not use overrides
+                if (log.shouldWarn())
+                    log.warn("CPS requested " + length + " got " + rv.size());
+                int min = settings.getLength();
+                int skew = settings.getLengthVariance();
+                if (skew < 0)
+                    min += skew;
+                // not enough peers to build the minimum size
+                if (rv.size() < min)
+                    return null;
+            }
         } else {
             rv = new ArrayList<Hash>(1);
         }
 
-        //if (length != rv.size() && log.shouldWarn())
-        //    log.warn("CPS requested " + length + " got " + rv.size() + ": " + DataHelper.toString(rv));
-        //else if (log.shouldDebug())
-        //    log.debug("EPS result: " + DataHelper.toString(rv));
         if (isInbound)
             rv.add(0, ctx.routerHash());
         else
-- 
GitLab