From 684506b0be403de9b4e2697d35b9aebff985d42e Mon Sep 17 00:00:00 2001
From: zzz <zzz@i2pmail.org>
Date: Thu, 25 Mar 2021 08:46:00 -0400
Subject: [PATCH] Transports: Don't open UPnP ports for disabled IPv4/v6

---
 router/java/src/net/i2p/router/transport/Transport.java    | 5 +++++
 .../src/net/i2p/router/transport/TransportManager.java     | 7 +++++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/router/java/src/net/i2p/router/transport/Transport.java b/router/java/src/net/i2p/router/transport/Transport.java
index b3f129d25d..4bd26aac6a 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 84516eccf8..544e863f8b 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)) {
-- 
GitLab