From bd6d6426fd5d67c4387fa1e9dba1e1888988095e Mon Sep 17 00:00:00 2001
From: zzz <zzz@i2pmail.org>
Date: Tue, 23 Mar 2021 08:14:17 -0400
Subject: [PATCH] SSU: Try to fix IPv6 transition from firewalled to
 non-firewalled

state was right but published address wasn't updated because looking
in wrong place for saved ipv6 address
---
 .../i2p/router/transport/udp/UDPTransport.java   | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 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 aa21454fd8..96c738a0e9 100644
--- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
+++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
@@ -3361,11 +3361,19 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
                     removeExternalAddress(true, true);
                 } else if (STATUS_IPV6_FW_2.contains(old) &&
                            STATUS_IPV6_OK.contains(status) &&
-                           _lastOurIPv6 != null &&
                            !explicitAddressSpecified()){
-                     String addr = Addresses.toString(_lastOurIPv6);
-                     int port = _context.getProperty(PROP_EXTERNAL_PORT, -1);
-                     rebuildExternalAddress(addr, port, true);
+                    RouterAddress ra = _currentOurV6Address;
+                    if (ra != null) {
+                        String addr = ra.getHost();
+                        if (addr != null) {
+                            int port = _context.getProperty(PROP_EXTERNAL_PORT, -1);
+                            rebuildExternalAddress(addr, port, true);
+                        } else if (_log.shouldWarn()) {
+                            _log.warn("Not IPv6 firewalled but no address?");
+                        }
+                    } else if (_log.shouldWarn()) {
+                        _log.warn("Not IPv6 firewalled but no address?");
+                    }
                 }
             } else {
                 rebuildExternalAddress();
-- 
GitLab