don't publish non-reachable router

This commit is contained in:
orignal 2023-02-25 17:19:14 -05:00
parent 4b421d3feb
commit de82b3ae19
2 changed files with 23 additions and 3 deletions

View File

@ -1241,10 +1241,23 @@ namespace i2p
void RouterContext::ScheduleInitialPublish ()
{
m_PublishTimer.expires_from_now (boost::posix_time::seconds(ROUTER_INFO_INITIAL_PUBLISH_INTERVAL));
m_PublishTimer.async_wait (std::bind (&RouterContext::HandlePublishTimer,
m_PublishTimer.async_wait (std::bind (&RouterContext::HandleInitialPublishTimer,
this, std::placeholders::_1));
}
void RouterContext::HandleInitialPublishTimer (const boost::system::error_code& ecode)
{
if (ecode != boost::asio::error::operation_aborted)
{
if (m_RouterInfo.IsReachableBy (i2p::data::RouterInfo::eAllTransports))
HandlePublishTimer (ecode);
else if (!ecode)
ScheduleInitialPublish ();
else
LogPrint (eLogError, "Router: initial publish timer error ", ecode.message ());
}
}
void RouterContext::SchedulePublish ()
{
m_PublishTimer.cancel ();
@ -1267,7 +1280,10 @@ namespace i2p
}
UpdateTimestamp (i2p::util::GetSecondsSinceEpoch ());
Publish ();
SchedulePublishResend ();
if (!ecode)
SchedulePublishResend ();
else
LogPrint (eLogError, "Router: publish timer error ", ecode.message ());
}
}
@ -1324,7 +1340,10 @@ namespace i2p
{
i2p::context.UpdateTimestamp (i2p::util::GetSecondsSinceEpoch ());
Publish ();
SchedulePublishResend ();
if (!ecode)
SchedulePublishResend ();
else
LogPrint (eLogError, "Router: publish resend timer error ", ecode.message ());
}
}
}

View File

@ -197,6 +197,7 @@ namespace garlic
void PostDeliveryStatusMessage (std::shared_ptr<I2NPMessage> msg);
void ScheduleInitialPublish ();
void HandleInitialPublishTimer (const boost::system::error_code& ecode);
void SchedulePublish ();
void HandlePublishTimer (const boost::system::error_code& ecode);
void Publish ();