|
|
@ -408,14 +408,11 @@ namespace stream |
|
|
|
else |
|
|
|
else |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (m_SentPackets.empty ()) |
|
|
|
|
|
|
|
m_ResendTimer.cancel (); |
|
|
|
if (acknowledged) |
|
|
|
if (acknowledged) |
|
|
|
{ |
|
|
|
{ |
|
|
|
bool isPreviousResend = m_NumResendAttempts > 0; |
|
|
|
|
|
|
|
m_NumResendAttempts = 0; |
|
|
|
m_NumResendAttempts = 0; |
|
|
|
if (m_SentPackets.empty ()) |
|
|
|
|
|
|
|
m_ResendTimer.cancel (); |
|
|
|
|
|
|
|
else if (isPreviousResend) // resend outstanding
|
|
|
|
|
|
|
|
HandleResendTimer (boost::system::error_code ()); // no error
|
|
|
|
|
|
|
|
SendBuffer (); |
|
|
|
SendBuffer (); |
|
|
|
} |
|
|
|
} |
|
|
|
if (m_Status == eStreamStatusClosed) |
|
|
|
if (m_Status == eStreamStatusClosed) |
|
|
@ -827,8 +824,6 @@ namespace stream |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// collect packets to resend
|
|
|
|
// collect packets to resend
|
|
|
|
int maxNumPackets = (m_WindowSize >> 1); // /2
|
|
|
|
|
|
|
|
if (maxNumPackets < WINDOW_SIZE) maxNumPackets = WINDOW_SIZE; |
|
|
|
|
|
|
|
auto ts = i2p::util::GetMillisecondsSinceEpoch (); |
|
|
|
auto ts = i2p::util::GetMillisecondsSinceEpoch (); |
|
|
|
std::vector<Packet *> packets; |
|
|
|
std::vector<Packet *> packets; |
|
|
|
for (auto it : m_SentPackets) |
|
|
|
for (auto it : m_SentPackets) |
|
|
@ -837,8 +832,6 @@ namespace stream |
|
|
|
{ |
|
|
|
{ |
|
|
|
it->sendTime = ts; |
|
|
|
it->sendTime = ts; |
|
|
|
packets.push_back (it); |
|
|
|
packets.push_back (it); |
|
|
|
maxNumPackets--; |
|
|
|
|
|
|
|
if (maxNumPackets <= 0) break; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|