diff --git a/router/java/src/net/i2p/router/transport/Transport.java b/router/java/src/net/i2p/router/transport/Transport.java index b3f129d25d51ef715765cfc4e1a59de6d36c89c1..4bd26aac6a5aaee03df583b9979220f4a02c183c 100644 --- a/router/java/src/net/i2p/router/transport/Transport.java +++ b/router/java/src/net/i2p/router/transport/Transport.java @@ -196,6 +196,11 @@ public interface Transport { @Deprecated public void recheckReachability(); + /** + * @since 0.9.50 added to interface + */ + public TransportUtil.IPv6Config getIPv6Config(); + public boolean isBacklogged(Hash peer); /** diff --git a/router/java/src/net/i2p/router/transport/TransportManager.java b/router/java/src/net/i2p/router/transport/TransportManager.java index 84516eccf8e0ea011908b07fc8754a01ed4e61e3..544e863f8b2f66ea0c063a2685146752c8deed7e 100644 --- a/router/java/src/net/i2p/router/transport/TransportManager.java +++ b/router/java/src/net/i2p/router/transport/TransportManager.java @@ -797,10 +797,13 @@ public class TransportManager implements TransportEventListener { port = udp.getRequestedPort(); } if (port > 0) { + TransportUtil.IPv6Config config = t.getIPv6Config(); // ipv4 - rv.add(new Port(t.getStyle(), port)); + if (config != TransportUtil.IPv6Config.IPV6_ONLY) + rv.add(new Port(t.getStyle(), port)); // ipv6 - if (_context.getProperty(PROP_ENABLE_UPNP_IPV6, DEFAULT_ENABLE_UPNP_IPV6)) { + if (_context.getProperty(PROP_ENABLE_UPNP_IPV6, DEFAULT_ENABLE_UPNP_IPV6) && + config != TransportUtil.IPv6Config.IPV6_DISABLED) { RouterAddress ra = t.getCurrentAddress(true); if (ra == null) { if (t.getStyle().equals(UDPTransport.STYLE)) {