diff --git a/libi2pd/RouterContext.cpp b/libi2pd/RouterContext.cpp index 62f5701f..df50b67f 100644 --- a/libi2pd/RouterContext.cpp +++ b/libi2pd/RouterContext.cpp @@ -550,13 +550,15 @@ namespace i2p void RouterContext::UpdateNTCP2V6Address (const boost::asio::ip::address& host) { + bool isYgg = i2p::util::net::IsYggdrasilAddress (host); bool updated = false; auto& addresses = m_RouterInfo.GetAddresses (); for (auto& addr: addresses) { if (addr->IsPublishedNTCP2 ()) { - if (addr->host.is_v6 ()) + bool isYgg1 = i2p::util::net::IsYggdrasilAddress (addr->host); + if (addr->host.is_v6 () && ((isYgg && isYgg1) || (!isYgg && !isYgg1))) { if (addr->host != host) { diff --git a/libi2pd/util.cpp b/libi2pd/util.cpp index a36ab25f..b70aed8d 100644 --- a/libi2pd/util.cpp +++ b/libi2pd/util.cpp @@ -449,6 +449,7 @@ namespace net { boost::asio::ip::address_v6::bytes_type bytes; memcpy (bytes.data (), &sa->sin6_addr, 16); + freeifaddrs(addrs); return boost::asio::ip::address_v6 (bytes); } }