From 29f9986f40ce195b998728b3b83216b0eaab4607 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Sat, 29 Feb 2020 14:44:07 +0000
Subject: [PATCH] i2ptunnel: Check for same interface before warning of dup
 port

---
 .../src/net/i2p/i2ptunnel/web/IndexBean.java   | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java
index 85fcd595b8..5951ce1e2d 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java
@@ -420,13 +420,23 @@ public class IndexBean {
                        ": " + port + "</font>";
             // dup check, O(n**2)
             List<TunnelController> controllers = _group.getControllers();
+            String ifc = tun.getListenOnInterface();
             for (int i = 0; i < controllers.size(); i++) {
                 if (i == tunnel)
                     continue;
-                if (port.equals(controllers.get(i).getListenPort()))
-                    return "<font color=\"red\">" +
-                           _t("Warning - duplicate port") +
-                           ": " + port + "</font>";
+                TunnelController tc = controllers.get(i);
+                if (port.equals(tc.getListenPort())) {
+                    String ifc2 = tc.getListenOnInterface();
+                    if (DataHelper.eq(ifc, ifc2) ||
+                        "0.0.0.0".equals(ifc) ||
+                        "0.0.0.0".equals(ifc2) ||
+                        "0:0:0:0:0:0:0:0".equals(ifc) ||
+                        "0:0:0:0:0:0:0:0".equals(ifc2)) {
+                        return "<font color=\"red\">" +
+                               _t("Warning - duplicate port") +
+                               ": " + port + "</font>";
+                    }
+                }
             }
             return port;
         }
-- 
GitLab