diff --git a/Streaming.cpp b/Streaming.cpp index 510d0f14..9420bd4b 100644 --- a/Streaming.cpp +++ b/Streaming.cpp @@ -608,17 +608,16 @@ namespace stream LogPrint (eLogInfo, "All leases are expired. Trying to request"); m_RemoteLeaseSet = nullptr; m_LocalDestination.GetOwner ().RequestDestination (m_RemoteIdentity.GetIdentHash (), - std::bind (&Stream::HandleLeaseSetRequestComplete, shared_from_this (), - std::placeholders::_1, packets)); + std::bind (&Stream::HandleLeaseSetRequestComplete, shared_from_this (), std::placeholders::_1)); } } - void Stream::HandleLeaseSetRequestComplete (bool success, std::vector packets) + void Stream::HandleLeaseSetRequestComplete (bool success) { if (success) { - LogPrint (eLogInfo, "New LeaseSet found. Sending packets"); - SendPackets (packets); + LogPrint (eLogInfo, "New LeaseSet found"); + UpdateCurrentRemoteLease (); } } @@ -717,7 +716,10 @@ namespace stream if (!leases.empty ()) { uint32_t i = i2p::context.GetRandomNumberGenerator ().GenerateWord32 (0, leases.size () - 1); - m_CurrentRemoteLease = leases[i]; + if (m_CurrentRemoteLease.endDate && leases[i].tunnelID == m_CurrentRemoteLease.tunnelID) + // make sure we don't select previous + i = (i + 1) % leases.size (); // if so, pick next + m_CurrentRemoteLease = leases[i]; } else { diff --git a/Streaming.h b/Streaming.h index 12a674bc..cfb2ce90 100644 --- a/Streaming.h +++ b/Streaming.h @@ -147,7 +147,7 @@ namespace stream template void HandleReceiveTimer (const boost::system::error_code& ecode, const Buffer& buffer, ReceiveHandler handler); - void HandleLeaseSetRequestComplete (bool success, std::vector packets); + void HandleLeaseSetRequestComplete (bool success); void ScheduleResend (); void HandleResendTimer (const boost::system::error_code& ecode);