mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-02-02 06:54:15 +00:00
random remote lease selection for LeaseSet update
This commit is contained in:
parent
fe3ebc4c84
commit
c5e2ec5e00
@ -661,25 +661,34 @@ namespace stream
|
|||||||
|
|
||||||
void Stream::SendUpdatedLeaseSet ()
|
void Stream::SendUpdatedLeaseSet ()
|
||||||
{
|
{
|
||||||
if (m_RoutingSession && m_RoutingSession->IsLeaseSetUpdated ())
|
if (m_RoutingSession && m_RemoteLeaseSet &&
|
||||||
|
(m_RoutingSession->IsLeaseSetUpdated () || m_RoutingSession->IsLeaseSetNonConfirmed ()))
|
||||||
{
|
{
|
||||||
if (!m_CurrentRemoteLease)
|
auto leases = m_RemoteLeaseSet->GetNonExpiredLeases (true); // with threshold
|
||||||
UpdateCurrentRemoteLease (true);
|
if (leases.empty ())
|
||||||
if (m_CurrentRemoteLease)
|
|
||||||
{
|
{
|
||||||
auto msg = m_RoutingSession->WrapSingleMessage (nullptr);
|
|
||||||
auto outboundTunnel = m_LocalDestination.GetOwner ()->GetTunnelPool ()->GetNextOutboundTunnel ();
|
auto outboundTunnel = m_LocalDestination.GetOwner ()->GetTunnelPool ()->GetNextOutboundTunnel ();
|
||||||
if (outboundTunnel)
|
if (outboundTunnel)
|
||||||
m_CurrentOutboundTunnel->SendTunnelDataMsg (
|
{
|
||||||
|
auto lease = leases[rand () % leases.size ()];
|
||||||
|
auto msg = m_RoutingSession->WrapSingleMessage (nullptr);
|
||||||
|
outboundTunnel->SendTunnelDataMsg (
|
||||||
{
|
{
|
||||||
i2p::tunnel::TunnelMessageBlock
|
i2p::tunnel::TunnelMessageBlock
|
||||||
{
|
{
|
||||||
i2p::tunnel::eDeliveryTypeTunnel,
|
i2p::tunnel::eDeliveryTypeTunnel,
|
||||||
m_CurrentRemoteLease->tunnelGateway, m_CurrentRemoteLease->tunnelID,
|
lease->tunnelGateway, lease->tunnelID,
|
||||||
msg
|
msg
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
LogPrint (eLogDebug, "Streaming: Updated LeaseSet sent. sSID=", m_SendStreamID);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LogPrint (eLogWarning, "Streaming: Can't sent updated LeaseSet. Remote LeaseSet expired. sSID=", m_SendStreamID);
|
||||||
|
m_LocalDestination.GetOwner ()->RequestDestination (m_RemoteIdentity->GetIdentHash ());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ namespace stream
|
|||||||
const int INITIAL_RTO = 9000; // in milliseconds
|
const int INITIAL_RTO = 9000; // in milliseconds
|
||||||
const size_t MAX_PENDING_INCOMING_BACKLOG = 128;
|
const size_t MAX_PENDING_INCOMING_BACKLOG = 128;
|
||||||
const int PENDING_INCOMING_TIMEOUT = 10; // in seconds
|
const int PENDING_INCOMING_TIMEOUT = 10; // in seconds
|
||||||
const int MAX_RECEIVE_TIMEOUT = 60; // in seconds
|
const int MAX_RECEIVE_TIMEOUT = 30; // in seconds
|
||||||
|
|
||||||
/** i2cp option for limiting inbound stremaing connections */
|
/** i2cp option for limiting inbound stremaing connections */
|
||||||
const char I2CP_PARAM_STREAMING_MAX_CONNS_PER_MIN[] = "maxconns";
|
const char I2CP_PARAM_STREAMING_MAX_CONNS_PER_MIN[] = "maxconns";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user