From f4fdbceb3bcc7108caf04c751eec1d268f7540fb Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Sun, 24 May 2009 00:29:18 +0000 Subject: [PATCH] * SSU: Don't offer to introduce when near connection limit --- .../i2p/router/transport/udp/EstablishmentManager.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java index d36a3053d2..05047c4f99 100644 --- a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java +++ b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java @@ -282,7 +282,10 @@ public class EstablishmentManager { } if (isNew) { // we don't expect inbound connections when hidden, but it could happen - if ((!_context.router().isHidden()) && !_transport.introducersRequired()) { + // Don't offer if we are approaching max connections. While Relay Intros do not + // count as connections, we have to keep the connection to this peer up longer if + // we are offering introductions. + if ((!_context.router().isHidden()) && (!_transport.introducersRequired()) && _transport.haveCapacity()) { long tag = _context.random().nextLong(MAX_TAG_VALUE); state.setSentRelayTag(tag); if (_log.shouldLog(Log.INFO)) @@ -570,7 +573,8 @@ public class EstablishmentManager { private void sendCreated(InboundEstablishState state) { long now = _context.clock().now(); - if (!_transport.introducersRequired()) { + // don't offer if we are approaching max connections (see comments above) + if ((!_transport.introducersRequired()) && _transport.haveCapacity()) { // offer to relay // (perhaps we should check our bw usage and/or how many peers we are // already offering introducing?) -- GitLab