diff -U2 -r /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/libi2pd/RouterContext.cpp /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/libi2pd/RouterContext.cpp --- /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/libi2pd/RouterContext.cpp 2026-07-25 15:47:38.000000000 +0000 +++ /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/libi2pd/RouterContext.cpp 2026-07-25 11:57:20.000000000 +0000 @@ -1482,5 +1482,6 @@ m_PublishExcluded.insert (i2p::context.GetIdentHash ()); // don't publish to ourselves } - SchedulePublishResend (Publish ()); + Publish (); + SchedulePublishResend (); } else @@ -1489,7 +1490,7 @@ } - uint64_t RouterContext::Publish () + void RouterContext::Publish () { - if (!i2p::transport::transports.IsOnline ()) return ROUTER_INFO_INITIAL_PUBLISH_INTERVAL*1000LL; + if (!i2p::transport::transports.IsOnline ()) return; if (m_PublishExcluded.size () > ROUTER_INFO_MAX_PUBLISH_EXCLUDED_FLOODFILLS) { @@ -1499,5 +1500,4 @@ } - uint64_t publishConfirmationTimeout = ROUTER_INFO_CONFIRMATION_TIMEOUT; auto floodfill = i2p::data::netdb.GetClosestFloodfill (i2p::context.GetIdentHash (), m_PublishExcluded); if (floodfill) @@ -1534,14 +1534,7 @@ outbound->SendTunnelDataMsgTo (floodfill->GetIdentHash (), 0, i2p::garlic::WrapECIESX25519MessageForRouter (msg, floodfill->GetIdentity ()->GetEncryptionPublicKey ())); - publishConfirmationTimeout += inbound->LatencyIsKnown() ? (uint64_t)(inbound->GetMeanLatency())/1000LL : - inbound->GetNumHops ()*(uint64_t)(i2p::tunnel::HIGH_LATENCY_PER_HOP)/1000LL; - publishConfirmationTimeout += outbound->LatencyIsKnown() ? (uint64_t)(outbound->GetMeanLatency())/1000LL : - outbound->GetNumHops ()*(uint64_t)(i2p::tunnel::HIGH_LATENCY_PER_HOP)/1000LL; } else - { - publishConfirmationTimeout = ROUTER_INFO_INITIAL_PUBLISH_INTERVAL*1000LL; - LogPrint (eLogWarning, "Router: Can't publish our RouterInfo. No tunnels. Try again in ", publishConfirmationTimeout, " milliseconds"); - } + LogPrint (eLogInfo, "Router: Can't publish our RouterInfo. No tunnels. Try again in ", ROUTER_INFO_CONFIRMATION_TIMEOUT, " milliseconds"); } m_PublishExcluded.insert (floodfill->GetIdentHash ()); @@ -1549,17 +1542,13 @@ } else - { - publishConfirmationTimeout = ROUTER_INFO_INITIAL_PUBLISH_INTERVAL*1000LL; - LogPrint (eLogWarning, "Router: Can't find floodfill to publish our RouterInfo"); - } - return publishConfirmationTimeout; + LogPrint (eLogInfo, "Router: Can't find floodfill to publish our RouterInfo"); } - void RouterContext::SchedulePublishResend (uint64_t publishConfirmationTimeout) + void RouterContext::SchedulePublishResend () { if (m_PublishTimer) { m_PublishTimer->cancel (); - m_PublishTimer->expires_after (std::chrono::milliseconds(publishConfirmationTimeout)); + m_PublishTimer->expires_after (std::chrono::milliseconds(ROUTER_INFO_CONFIRMATION_TIMEOUT)); m_PublishTimer->async_wait (std::bind (&RouterContext::HandlePublishResendTimer, this, std::placeholders::_1)); @@ -1574,5 +1563,6 @@ { i2p::context.UpdateTimestamp (i2p::util::GetSecondsSinceEpoch ()); - SchedulePublishResend (Publish ()); + Publish (); + SchedulePublishResend (); } } diff -U2 -r /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/libi2pd/RouterContext.h /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/libi2pd/RouterContext.h --- /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/libi2pd/RouterContext.h 2026-07-25 15:47:38.000000000 +0000 +++ /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/libi2pd/RouterContext.h 2026-07-25 11:57:20.000000000 +0000 @@ -234,6 +234,6 @@ void SchedulePublish (); void HandlePublishTimer (const boost::system::error_code& ecode); - uint64_t Publish (); // return actual publish confirmation timeout in milliseconds - void SchedulePublishResend (uint64_t publishConfirmationTimeout); + void Publish (); + void SchedulePublishResend (); void HandlePublishResendTimer (const boost::system::error_code& ecode); void ScheduleCongestionUpdate ();