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