mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-04-28 03:37:49 +02:00
send immediate ack request if no packet being sent
This commit is contained in:
parent
cd648b9b3f
commit
07d108bb6f
2 changed files with 13 additions and 5 deletions
|
@ -877,13 +877,18 @@ namespace stream
|
|||
}
|
||||
packet[size] = 0;
|
||||
size++; // resend delay
|
||||
htobuf16 (packet + size, choking ? PACKET_FLAG_DELAY_REQUESTED : 0); // no flags set or delay
|
||||
bool requestImmediateAck = false;
|
||||
if (!choking)
|
||||
requestImmediateAck = m_LastSendTime && ts > m_LastSendTime + REQUEST_IMMEDIATE_ACK_INTERVAL &&
|
||||
ts > m_LastSendTime + REQUEST_IMMEDIATE_ACK_INTERVAL + m_LocalDestination.GetRandom () % REQUEST_IMMEDIATE_ACK_INTERVAL_VARIANCE;
|
||||
htobuf16 (packet + size, (choking || requestImmediateAck) ? PACKET_FLAG_DELAY_REQUESTED : 0); // no flags set or delay requested
|
||||
size += 2; // flags
|
||||
if (choking)
|
||||
if (choking || requestImmediateAck)
|
||||
{
|
||||
htobuf16 (packet + size, 2); // 2 bytes delay interval
|
||||
htobuf16 (packet + size + 2, DELAY_CHOKING); // set choking interval
|
||||
htobuf16 (packet + size + 2, choking ? DELAY_CHOKING : 0); // set choking or immediated ack interval
|
||||
size += 2;
|
||||
if (requestImmediateAck) m_LastSendTime = ts; // ack request sent
|
||||
}
|
||||
else
|
||||
htobuf16 (packet + size, 0); // no options
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue