1
0
mirror of https://github.com/PurpleI2P/i2pd.git synced 2025-02-07 07:44:13 +00:00

re-request remote LeaseSet

This commit is contained in:
orignal 2015-03-22 18:34:39 -04:00
parent 18deb8b4f2
commit 4b47bfb5db

View File

@ -560,7 +560,7 @@ namespace stream
UpdateCurrentRemoteLease (); UpdateCurrentRemoteLease ();
if (!m_RemoteLeaseSet) if (!m_RemoteLeaseSet)
{ {
LogPrint ("Can't send packets. Missing remote LeaseSet"); LogPrint (eLogError, "Can't send packets. Missing remote LeaseSet");
return; return;
} }
} }
@ -568,7 +568,7 @@ namespace stream
m_CurrentOutboundTunnel = m_LocalDestination.GetOwner ().GetTunnelPool ()->GetNextOutboundTunnel (); m_CurrentOutboundTunnel = m_LocalDestination.GetOwner ().GetTunnelPool ()->GetNextOutboundTunnel ();
if (!m_CurrentOutboundTunnel) if (!m_CurrentOutboundTunnel)
{ {
LogPrint ("No outbound tunnels in the pool"); LogPrint (eLogError, "No outbound tunnels in the pool");
return; return;
} }
@ -582,17 +582,29 @@ namespace stream
{ {
auto msg = m_RoutingSession->WrapSingleMessage (CreateDataMessage (it->GetBuffer (), it->GetLength ())); auto msg = m_RoutingSession->WrapSingleMessage (CreateDataMessage (it->GetBuffer (), it->GetLength ()));
msgs.push_back (i2p::tunnel::TunnelMessageBlock msgs.push_back (i2p::tunnel::TunnelMessageBlock
{ {
i2p::tunnel::eDeliveryTypeTunnel, i2p::tunnel::eDeliveryTypeTunnel,
m_CurrentRemoteLease.tunnelGateway, m_CurrentRemoteLease.tunnelID, m_CurrentRemoteLease.tunnelGateway, m_CurrentRemoteLease.tunnelID,
msg msg
}); });
m_NumSentBytes += it->GetLength (); m_NumSentBytes += it->GetLength ();
} }
m_CurrentOutboundTunnel->SendTunnelDataMsg (msgs); m_CurrentOutboundTunnel->SendTunnelDataMsg (msgs);
} }
else else
LogPrint ("All leases are expired"); {
LogPrint (eLogInfo, "All leases are expired. Trying to request");
m_RemoteLeaseSet = nullptr;
m_LocalDestination.GetOwner ().RequestDestination (m_RemoteIdentity.GetIdentHash (),
[packets, this](bool success)
{
if (success)
{
LogPrint (eLogInfo, "New LeaseSet found. Sending packets");
SendPackets (packets);
}
});
}
} }
void Stream::ScheduleResend () void Stream::ScheduleResend ()
@ -642,7 +654,7 @@ namespace stream
case 4: case 4:
UpdateCurrentRemoteLease (); // pick another lease UpdateCurrentRemoteLease (); // pick another lease
m_RTO = INITIAL_RTO; // drop RTO to initial upon tunnels pair change m_RTO = INITIAL_RTO; // drop RTO to initial upon tunnels pair change
LogPrint (eLogWarning, "Another remote lease has been selected stream"); LogPrint (eLogWarning, "Another remote lease has been selected for stream");
break; break;
case 3: case 3:
// pick another outbound tunnel // pick another outbound tunnel