From f26c616fdc0ad53a7abc576cd982ff85ab79ce73 Mon Sep 17 00:00:00 2001
From: zzz <zzz@i2pmail.org>
Date: Sat, 17 Dec 2022 11:56:12 -0500
Subject: [PATCH] SSU: Rewrite isTooClose()

to use actual local IP rather than iterating through getCurrentAddresses(),
more efficient and works even when firewalled
---
 .../router/transport/udp/UDPTransport.java    | 20 +++++++++----------
 1 file changed, 9 insertions(+), 11 deletions(-)

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 4b2fea424d..5c3372d5d4 100644
--- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
+++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
@@ -1049,17 +1049,15 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
     boolean isTooClose(byte[] ip) {
         if (allowLocal())
             return false;
-        for (RouterAddress addr : getCurrentAddresses()) {
-            byte[] myip = addr.getIP();
-            if (myip == null || ip.length != myip.length)
-                continue;
-            if (ip.length == 4) {
-                if (DataHelper.eq(ip, 0, myip, 0, 2))
-                    return true;
-            } else if (ip.length == 16) {
-                if (DataHelper.eq(ip, 0, myip, 0, 4))
-                    return true;
-            }
+        byte[] myip = ip.length == 16 ? _lastOurIPv6 : _lastOurIPv4;
+        if (myip == null)
+            return false;
+        if (ip.length == 4) {
+            if (DataHelper.eq(ip, 0, myip, 0, 2))
+                return true;
+        } else if (ip.length == 16) {
+            if (DataHelper.eq(ip, 0, myip, 0, 4))
+                return true;
         }
         return false;
     }
-- 
GitLab