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.
This commit is contained in:
zzz
2024-02-29 08:06:59 -05:00
parent 92e7ebdf41
commit 9c1f58f54d
@@ -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