Browse Source

don't publish non-reachable router

pull/1890/head
orignal 2 years ago
parent
commit
de82b3ae19
  1. 25
      libi2pd/RouterContext.cpp
  2. 1
      libi2pd/RouterContext.h

25
libi2pd/RouterContext.cpp

@ -1241,9 +1241,22 @@ namespace i2p @@ -1241,9 +1241,22 @@ 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 ()
{
@ -1267,7 +1280,10 @@ namespace i2p @@ -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 @@ -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 ());
}
}
}

1
libi2pd/RouterContext.h

@ -197,6 +197,7 @@ namespace garlic @@ -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 ();

Loading…
Cancel
Save