diff --git a/router/java/src/net/i2p/router/tunnel/pool/TestJob.java b/router/java/src/net/i2p/router/tunnel/pool/TestJob.java index 8b2332f37ad52f81eeaa6dcdb54636acfb575b09..b81178bdf75b8baf81ff43a2c075361552bef69d 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TestJob.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TestJob.java @@ -212,7 +212,11 @@ class TestJob extends JobImpl { // Minimum is 7.5s (since a 0-hop could be the expl. tunnel, but only >= 1-hop client tunnels are tested) // Network average for success is about 1.5s. // Another possibility - make configurable via pool options - return 2500 * (_outTunnel.getLength() + _replyTunnel.getLength()); + // + // Try to prevent congestion collapse (failing all our tunnels and then clogging our outbound + // with new tunnel build requests) by adding in three times the average outbound delay. + int delay = 3 * (int) getContext().statManager().getRate("transport.sendProcessingTime").getRate(60*1000).getAverageValue(); + return delay + (2500 * (_outTunnel.getLength() + _replyTunnel.getLength())); } private void scheduleRetest() { scheduleRetest(false); }