From 155da5aad2dc0bb6d88d7276e9e3a12639cf9ead Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Wed, 21 Jan 2015 20:31:42 +0000 Subject: Add debug ability to ignore reliably sent packets that are not acknowledged. This is controlled via the console command "debug lludp client set process-unacked-sends true [ ]" For debug purposes to see if this process for very bad connections is causing general outbound udp processing delays. Relates to http://opensimulator.org/mantis/view.php?id=7393 --- .../Region/ClientStack/Linden/UDP/LLUDPServer.cs | 47 +++++++++++++--------- 1 file changed, 27 insertions(+), 20 deletions(-) (limited to 'OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs') diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs index 4fec91f..ad83b42 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs @@ -1137,7 +1137,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP Utils.UIntToBytesBig(sequenceNumber, buffer.Data, 1); outgoingPacket.SequenceNumber = sequenceNumber; - if (isReliable) + if (udpClient.ProcessUnackedSends && isReliable) { // Add this packet to the list of ACK responses we are waiting on from the server udpClient.NeedAcks.Add(outgoingPacket); @@ -1325,30 +1325,37 @@ namespace OpenSim.Region.ClientStack.LindenUDP #region ACK Receiving - // Handle appended ACKs - if (packet.Header.AppendedAcks && packet.Header.AckList != null) + if (udpClient.ProcessUnackedSends) { -// m_log.DebugFormat( -// "[LLUDPSERVER]: Handling {0} appended acks from {1} in {2}", -// packet.Header.AckList.Length, client.Name, m_scene.Name); + // Handle appended ACKs + if (packet.Header.AppendedAcks && packet.Header.AckList != null) + { + // m_log.DebugFormat( + // "[LLUDPSERVER]: Handling {0} appended acks from {1} in {2}", + // packet.Header.AckList.Length, client.Name, m_scene.Name); - for (int i = 0; i < packet.Header.AckList.Length; i++) - udpClient.NeedAcks.Acknowledge(packet.Header.AckList[i], now, packet.Header.Resent); - } + for (int i = 0; i < packet.Header.AckList.Length; i++) + udpClient.NeedAcks.Acknowledge(packet.Header.AckList[i], now, packet.Header.Resent); + } - // Handle PacketAck packets - if (packet.Type == PacketType.PacketAck) - { - PacketAckPacket ackPacket = (PacketAckPacket)packet; + // Handle PacketAck packets + if (packet.Type == PacketType.PacketAck) + { + PacketAckPacket ackPacket = (PacketAckPacket)packet; -// m_log.DebugFormat( -// "[LLUDPSERVER]: Handling {0} packet acks for {1} in {2}", -// ackPacket.Packets.Length, client.Name, m_scene.Name); + // m_log.DebugFormat( + // "[LLUDPSERVER]: Handling {0} packet acks for {1} in {2}", + // ackPacket.Packets.Length, client.Name, m_scene.Name); - for (int i = 0; i < ackPacket.Packets.Length; i++) - udpClient.NeedAcks.Acknowledge(ackPacket.Packets[i].ID, now, packet.Header.Resent); + for (int i = 0; i < ackPacket.Packets.Length; i++) + udpClient.NeedAcks.Acknowledge(ackPacket.Packets[i].ID, now, packet.Header.Resent); - // We don't need to do anything else with PacketAck packets + // We don't need to do anything else with PacketAck packets + return; + } + } + else if (packet.Type == PacketType.PacketAck) + { return; } @@ -2011,7 +2018,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP if (udpClient.IsConnected) { - if (m_resendUnacked) + if (udpClient.ProcessUnackedSends && m_resendUnacked) HandleUnacked(llClient); if (m_sendAcks) -- cgit v1.1