From 9c1f58f54d804b4d55245e9d89db6f301711c653 Mon Sep 17 00:00:00 2001 From: zzz Date: Thu, 29 Feb 2024 08:06:59 -0500 Subject: [PATCH] Peer test: Treat IPv6 test result as unknown if Charlie is firewalled and we did not hear from him to greatly reduce false firewalled results. Firewalled charlies are generating a lot of false positives. This appears to be a bug with firewalled ipv6 i2pd charlies, through the current version. --- .../i2p/router/transport/udp/PeerTestManager.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java b/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java index 30a2a81b0..9ece9025f 100644 --- a/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java +++ b/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java @@ -826,8 +826,17 @@ class PeerTestManager { status = isIPv6 ? Status.IPV4_UNKNOWN_IPV6_OK : Status.IPV4_OK_IPV6_UNKNOWN; } } else if (test.getReceiveBobTime() > 0) { - // we received a message from bob (4) but no messages from charlie - status = isIPv6 ? Status.IPV4_UNKNOWN_IPV6_FIREWALLED : Status.IPV4_FIREWALLED_IPV6_UNKNOWN; + // We received a message from bob (4) but no messages from charlie + // i2pd bobs pick firewalled charlies, if we don't hear from them we call it unknown, + // otherwise we get a lot of false positives, almost always on IPv6. + // This appears to be a i2pd bug on the charlie side? + if (isIPv6 && PENDING_IP.equals(test.getCharlieIP())) { + if (_log.shouldWarn()) + _log.warn("Test complete, no response from firewalled Charlie, will retest"); + status = Status.UNKNOWN; + } else { + status = isIPv6 ? Status.IPV4_UNKNOWN_IPV6_FIREWALLED : Status.IPV4_FIREWALLED_IPV6_UNKNOWN; + } } else { // we never received anything from bob or charlie, // ignoring us, or unable to get a Charlie to respond