From 81f53d313ca034b0e1c4d4a191bae5751686e96d Mon Sep 17 00:00:00 2001 From: orignal Date: Thu, 11 Aug 2022 20:16:08 -0400 Subject: [PATCH] alsways set some port to SSU2 address --- libi2pd/RouterContext.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/libi2pd/RouterContext.cpp b/libi2pd/RouterContext.cpp index 5ebacfcc..a663cf92 100644 --- a/libi2pd/RouterContext.cpp +++ b/libi2pd/RouterContext.cpp @@ -373,14 +373,26 @@ namespace i2p void RouterContext::PublishSSU2Address (int port, bool publish, bool v4, bool v6) { - if (!m_SSU2Keys || (publish && !port)) return; + if (!m_SSU2Keys) return; + int newPort = 0; + if (!port) + { + for (const auto& address : m_RouterInfo.GetAddresses ()) + if (address->port) + { + newPort = address->port; + break; + } + if (!newPort) newPort = SelectRandomPort (); + } bool updated = false; for (auto& address : m_RouterInfo.GetAddresses ()) { - if (address->IsSSU2 () && (address->port != port || address->published != publish) && + if (address->IsSSU2 () && (!address->port || address->port != port || address->published != publish) && ((v4 && address->IsV4 ()) || (v6 && address->IsV6 ()))) { - address->port = port; + if (port) address->port = port; + else if (!address->port) address->port = newPort; address->published = publish; if (publish) address->caps |= (i2p::data::RouterInfo::eSSUIntroducer | i2p::data::RouterInfo::eSSUTesting);