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 07c89f40e6f7e40e850ee9c9ec06faa3edf26c83..af500fd91b3728ec15a19b9ade9ac8579c239bb2 100644 --- a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java +++ b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java @@ -407,19 +407,21 @@ class EstablishmentManager { _transport.failed(msg, "Peer has bad key, cannot establish"); return; } - boolean allowExtendedOptions = VersionComparator.comp(toRouterInfo.getVersion(), - VERSION_ALLOW_EXTENDED_OPTIONS) >= 0 - && !_context.getBooleanProperty(PROP_DISABLE_EXT_OPTS); - // w/o ext options, it's always 'requested', no need to set - // don't ask if they are indirect - boolean requestIntroduction = allowExtendedOptions && !isIndirect && - _transport.introducersMaybeRequired(TransportUtil.isIPv6(ra)); if (version == 1) { + boolean allowExtendedOptions = VersionComparator.comp(toRouterInfo.getVersion(), + VERSION_ALLOW_EXTENDED_OPTIONS) >= 0 + && !_context.getBooleanProperty(PROP_DISABLE_EXT_OPTS); + // w/o ext options, it's always 'requested', no need to set + // don't ask if they are indirect + boolean requestIntroduction = allowExtendedOptions && !isIndirect && + _transport.introducersMaybeRequired(TransportUtil.isIPv6(ra)); state = new OutboundEstablishState(_context, maybeTo, to, toIdentity, allowExtendedOptions, requestIntroduction, sessionKey, addr, _transport.getDHFactory()); } else if (version == 2) { + boolean requestIntroduction = SSU2Util.ENABLE_RELAY && !isIndirect && + _transport.introducersMaybeRequired(TransportUtil.isIPv6(ra)); state = new OutboundEstablishState2(_context, _transport, maybeTo, to, toIdentity, requestIntroduction, sessionKey, ra, addr); } else { @@ -1152,8 +1154,8 @@ class EstablishmentManager { InboundEstablishState2 state2 = (InboundEstablishState2) state; InboundEstablishState.InboundState istate = state2.getState(); if (istate == IB_STATE_CREATED_SENT) { - if (_log.shouldDebug()) - _log.debug("Send created to: " + state); + if (_log.shouldInfo()) + _log.info("Retransmit created to: " + state); // if already sent, get from the state to retx pkt = state2.getRetransmitSessionCreatedPacket(); } else if (istate == IB_STATE_REQUEST_RECEIVED) { @@ -1204,8 +1206,8 @@ class EstablishmentManager { OutboundEstablishState.OutboundState ostate = state2.getState(); if (ostate == OB_STATE_REQUEST_SENT || ostate == OB_STATE_REQUEST_SENT_NEW_TOKEN) { - if (_log.shouldDebug()) - _log.debug("Send Session Request to: " + state); + if (_log.shouldInfo()) + _log.info("Retransmit Session Request to: " + state); // if already sent, get from the state to retx packet = state2.getRetransmitSessionRequestPacket(); } else if (ostate == OB_STATE_NEEDS_TOKEN || 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 2f07e7b31ff44db7adf348ce8466003b4eb64266..f4d07f6f13eda4fbf4d225b013cee331cab6fd59 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java @@ -922,10 +922,12 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority } // check version == "2" || version starts with "2," // and static key and intro key + // and, until we support relay, host and port. String v = addr.getOption("v"); if (v == null || addr.getOption("i") == null || addr.getOption("s") == null || + (!SSU2Util.ENABLE_RELAY && (addr.getHost() == null || addr.getPort() <= 0)) || (!v.equals(SSU2_VERSION) && !v.startsWith(SSU2_VERSION_ALT))) { // his address is SSU1 or is outbound SSU2 only //return (rv == 1 && _enableSSU1) ? 1 : 0; @@ -2315,6 +2317,8 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority //if (getSSUVersion(addr) == 0) // continue; if (addr.getOption("ihost0") == null) { + // No introducers + // Skip outbound-only or invalid address/port byte[] ip = addr.getIP(); int port = addr.getPort(); if (ip == null || !TransportUtil.isValidPort(port) || @@ -2327,6 +2331,9 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority String caps = addr.getOption(UDPAddress.PROP_CAPACITY); if (caps != null && caps.contains(CAP_IPV6) && !_haveIPv6Address) continue; + // Skip SSU2 with introducers until we support relay + if (_enableSSU2 && !SSU2Util.ENABLE_RELAY && addr.getTransportStyle().equals(STYLE2)) + continue; } return addr; } @@ -3782,7 +3789,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority for (Iterator<PeerState> iter = new RandomIterator<PeerState>(peers); iter.hasNext(); ) { PeerState peer = iter.next(); // Skip SSU2 until we have support for peer test - if (peer.getVersion() != 1) + if (peer.getVersion() != 1 && !SSU2Util.ENABLE_PEER_TEST) continue; if ( (dontInclude != null) && (dontInclude.equals(peer.getRemoteHostId())) ) continue;