* Changed the max RTO value to 60 seconds to comply with RFC 2988
* Implemented section 5.5, exponential backoff of the RTO after a resend0.6.8-post-fixes
parent
53bf479bab
commit
ac0acb0296
|
@ -500,7 +500,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
RTO = (int)(SRTT + Math.Max(m_udpServer.TickCountResolution, K * RTTVAR));
|
RTO = (int)(SRTT + Math.Max(m_udpServer.TickCountResolution, K * RTTVAR));
|
||||||
|
|
||||||
// Clamp the retransmission timeout to manageable values
|
// Clamp the retransmission timeout to manageable values
|
||||||
RTO = Utils.Clamp(RTO, 3000, 10000);
|
RTO = Utils.Clamp(RTO, 3000, 60000);
|
||||||
|
|
||||||
//m_log.Debug("[LLUDPCLIENT]: Setting agent " + this.Agent.FullName + "'s RTO to " + RTO + "ms with an RTTVAR of " +
|
//m_log.Debug("[LLUDPCLIENT]: Setting agent " + this.Agent.FullName + "'s RTO to " + RTO + "ms with an RTTVAR of " +
|
||||||
// RTTVAR + " based on new RTT of " + r + "ms");
|
// RTTVAR + " based on new RTT of " + r + "ms");
|
||||||
|
|
|
@ -407,6 +407,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
{
|
{
|
||||||
//m_log.Debug("[LLUDPSERVER]: Resending " + expiredPackets.Count + " packets to " + udpClient.AgentID + ", RTO=" + udpClient.RTO);
|
//m_log.Debug("[LLUDPSERVER]: Resending " + expiredPackets.Count + " packets to " + udpClient.AgentID + ", RTO=" + udpClient.RTO);
|
||||||
|
|
||||||
|
// Backoff the RTO
|
||||||
|
udpClient.RTO = Math.Min(udpClient.RTO * 2, 60000);
|
||||||
|
|
||||||
// Resend packets
|
// Resend packets
|
||||||
for (int i = 0; i < expiredPackets.Count; i++)
|
for (int i = 0; i < expiredPackets.Count; i++)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue