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 aa21454fd8ba59c083a41599fdbec89f1fe845cd..96c738a0e946196547a8c2ea5bc2d3e5eb1740d4 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();