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 27a331cc3..e846ed969 100644 --- a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java +++ b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java @@ -500,8 +500,9 @@ class EstablishmentManager { // TODO if already we have their RI, only offer if they need it (no 'C' cap) // if extended options, only if they asked for it if (state.isIntroductionRequested() && - _transport.canIntroduce() && state.getSentPort() >= 1024 && - state.getSentIP().length == 4) { + state.getSentIP().length == 4 && + state.getSentPort() >= 1024 && + _transport.canIntroduce()) { // ensure > 0 long tag = 1 + _context.random().nextLong(MAX_TAG_VALUE); state.setSentRelayTag(tag); diff --git a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java index 39bb8b361..ea4b2b2c4 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java @@ -2491,7 +2491,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority // if we have explicit external addresses, they had better be reachable String caps; - if (introducersRequired) { + if (introducersRequired || !canIntroduce()) { if (_context.getProperty(PROP_TRANSPORT_CAPS, ENABLE_TRANSPORT_CAPS)) caps = CAP_TESTING_4; else @@ -2785,7 +2785,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority case IPV4_UNKNOWN_IPV6_OK: case IPV4_UNKNOWN_IPV6_FIREWALLED: case UNKNOWN: - return true; + return _introManager.introducerCount() < 2 * MIN_INTRODUCER_POOL; default: return !allowDirectUDP();