From e4c7ef183f4eb887f50bc819a545e8e7a90263ca Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 6 Mar 2021 08:17:25 -0500 Subject: [PATCH] SSU: Require confirmation for IPv6 firewalled state transitions --- .../net/i2p/router/transport/udp/UDPTransport.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 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 2550b3481..f4e78988e 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java @@ -254,6 +254,15 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority Status.IPV4_UNKNOWN_IPV6_FIREWALLED, Status.IPV4_DISABLED_IPV6_FIREWALLED); + private static final Set STATUS_FW = EnumSet.of(Status.DIFFERENT, + Status.REJECT_UNSOLICITED, + Status.IPV4_FIREWALLED_IPV6_OK, + Status.IPV4_SNAT_IPV6_OK, + Status.IPV4_FIREWALLED_IPV6_UNKNOWN, + Status.IPV4_OK_IPV6_FIREWALLED, + Status.IPV4_UNKNOWN_IPV6_FIREWALLED, + Status.IPV4_DISABLED_IPV6_FIREWALLED); + private static final Set STATUS_IPV6_FW_2 = EnumSet.of(Status.IPV4_OK_IPV6_FIREWALLED, Status.IPV4_UNKNOWN_IPV6_FIREWALLED, Status.IPV4_DISABLED_IPV6_FIREWALLED, @@ -3303,8 +3312,8 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority if (status != old) { // for the following transitions ONLY, require two in a row // to prevent thrashing - if ((old == Status.OK && STATUS_IPV4_FW.contains(status)) || - (status == Status.OK && STATUS_IPV4_FW.contains(old))) { + if ((old == Status.OK && STATUS_FW.contains(status)) || + (status == Status.OK && STATUS_FW.contains(old))) { if (status != _reachabilityStatusPending) { if (_log.shouldLog(Log.WARN)) _log.warn("Old status: " + old + " status pending confirmation: " + status +