1
0
mirror of https://github.com/PurpleI2P/i2pd.git synced 2025-01-22 08:14:15 +00:00

don't reschedule resend timer for terminated streams

This commit is contained in:
orignal 2021-08-11 12:23:43 -04:00
parent d124d4cace
commit 49b3ac7f77
2 changed files with 12 additions and 7 deletions

View File

@ -104,6 +104,7 @@ namespace stream
void Stream::Terminate (bool deleteFromDestination) // shoudl be called from StreamingDestination::Stop only void Stream::Terminate (bool deleteFromDestination) // shoudl be called from StreamingDestination::Stop only
{ {
m_Status = eStreamStatusTerminated;
m_AckSendTimer.cancel (); m_AckSendTimer.cancel ();
m_ReceiveTimer.cancel (); m_ReceiveTimer.cancel ();
m_ResendTimer.cancel (); m_ResendTimer.cancel ();
@ -857,12 +858,15 @@ namespace stream
void Stream::ScheduleResend () void Stream::ScheduleResend ()
{ {
m_ResendTimer.cancel (); if (m_Status != eStreamStatusTerminated)
// check for invalid value {
if (m_RTO <= 0) m_RTO = INITIAL_RTO; m_ResendTimer.cancel ();
m_ResendTimer.expires_from_now (boost::posix_time::milliseconds(m_RTO)); // check for invalid value
m_ResendTimer.async_wait (std::bind (&Stream::HandleResendTimer, if (m_RTO <= 0) m_RTO = INITIAL_RTO;
shared_from_this (), std::placeholders::_1)); m_ResendTimer.expires_from_now (boost::posix_time::milliseconds(m_RTO));
m_ResendTimer.async_wait (std::bind (&Stream::HandleResendTimer,
shared_from_this (), std::placeholders::_1));
}
} }
void Stream::HandleResendTimer (const boost::system::error_code& ecode) void Stream::HandleResendTimer (const boost::system::error_code& ecode)

View File

@ -152,7 +152,8 @@ namespace stream
eStreamStatusOpen, eStreamStatusOpen,
eStreamStatusReset, eStreamStatusReset,
eStreamStatusClosing, eStreamStatusClosing,
eStreamStatusClosed eStreamStatusClosed,
eStreamStatusTerminated
}; };
class StreamingDestination; class StreamingDestination;