diff options
Diffstat (limited to 'OpenSim/Region/ClientStack')
-rw-r--r-- | OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | 18 | ||||
-rw-r--r-- | OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs | 27 |
2 files changed, 30 insertions, 15 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index bd61c3f..3d92705 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | |||
@@ -678,12 +678,22 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
678 | //there is a local handler for this packet type | 678 | //there is a local handler for this packet type |
679 | if (pprocessor.Async) | 679 | if (pprocessor.Async) |
680 | { | 680 | { |
681 | ClientInfo cinfo = UDPClient.GetClientInfo(); | ||
682 | if (!cinfo.AsyncRequests.ContainsKey(packet.Type.ToString())) | ||
683 | cinfo.AsyncRequests[packet.Type.ToString()] = 0; | ||
684 | cinfo.AsyncRequests[packet.Type.ToString()]++; | ||
685 | |||
681 | object obj = new AsyncPacketProcess(this, pprocessor.method, packet); | 686 | object obj = new AsyncPacketProcess(this, pprocessor.method, packet); |
682 | Util.FireAndForget(ProcessSpecificPacketAsync, obj); | 687 | Util.FireAndForget(ProcessSpecificPacketAsync, obj); |
683 | result = true; | 688 | result = true; |
684 | } | 689 | } |
685 | else | 690 | else |
686 | { | 691 | { |
692 | ClientInfo cinfo = UDPClient.GetClientInfo(); | ||
693 | if (!cinfo.SyncRequests.ContainsKey(packet.Type.ToString())) | ||
694 | cinfo.SyncRequests[packet.Type.ToString()] = 0; | ||
695 | cinfo.SyncRequests[packet.Type.ToString()]++; | ||
696 | |||
687 | result = pprocessor.method(this, packet); | 697 | result = pprocessor.method(this, packet); |
688 | } | 698 | } |
689 | } | 699 | } |
@@ -698,6 +708,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
698 | } | 708 | } |
699 | if (found) | 709 | if (found) |
700 | { | 710 | { |
711 | ClientInfo cinfo = UDPClient.GetClientInfo(); | ||
712 | if (!cinfo.GenericRequests.ContainsKey(packet.Type.ToString())) | ||
713 | cinfo.GenericRequests[packet.Type.ToString()] = 0; | ||
714 | cinfo.GenericRequests[packet.Type.ToString()]++; | ||
715 | |||
701 | result = method(this, packet); | 716 | result = method(this, packet); |
702 | } | 717 | } |
703 | } | 718 | } |
@@ -12030,7 +12045,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
12030 | ClientInfo info = m_udpClient.GetClientInfo(); | 12045 | ClientInfo info = m_udpClient.GetClientInfo(); |
12031 | 12046 | ||
12032 | info.proxyEP = null; | 12047 | info.proxyEP = null; |
12033 | info.agentcircuit = RequestClientInfo(); | 12048 | if (info.agentcircuit == null) |
12049 | info.agentcircuit = RequestClientInfo(); | ||
12034 | 12050 | ||
12035 | return info; | 12051 | return info; |
12036 | } | 12052 | } |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs index 621e0fd..7749446 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs | |||
@@ -159,6 +159,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
159 | private int m_defaultRTO = 1000; // 1sec is the recommendation in the RFC | 159 | private int m_defaultRTO = 1000; // 1sec is the recommendation in the RFC |
160 | private int m_maxRTO = 60000; | 160 | private int m_maxRTO = 60000; |
161 | 161 | ||
162 | private ClientInfo m_info = new ClientInfo(); | ||
163 | |||
162 | /// <summary> | 164 | /// <summary> |
163 | /// Default constructor | 165 | /// Default constructor |
164 | /// </summary> | 166 | /// </summary> |
@@ -240,20 +242,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
240 | // TODO: This data structure is wrong in so many ways. Locking and copying the entire lists | 242 | // TODO: This data structure is wrong in so many ways. Locking and copying the entire lists |
241 | // of pending and needed ACKs for every client every time some method wants information about | 243 | // of pending and needed ACKs for every client every time some method wants information about |
242 | // this connection is a recipe for poor performance | 244 | // this connection is a recipe for poor performance |
243 | ClientInfo info = new ClientInfo(); | 245 | |
244 | info.pendingAcks = new Dictionary<uint, uint>(); | 246 | m_info.resendThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Resend].DripRate; |
245 | info.needAck = new Dictionary<uint, byte[]>(); | 247 | m_info.landThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Land].DripRate; |
246 | 248 | m_info.windThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Wind].DripRate; | |
247 | info.resendThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Resend].DripRate; | 249 | m_info.cloudThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Cloud].DripRate; |
248 | info.landThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Land].DripRate; | 250 | m_info.taskThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Task].DripRate; |
249 | info.windThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Wind].DripRate; | 251 | m_info.assetThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Asset].DripRate; |
250 | info.cloudThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Cloud].DripRate; | 252 | m_info.textureThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Texture].DripRate; |
251 | info.taskThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Task].DripRate; | 253 | m_info.totalThrottle = (int)m_throttleCategory.DripRate; |
252 | info.assetThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Asset].DripRate; | 254 | |
253 | info.textureThrottle = (int)m_throttleCategories[(int)ThrottleOutPacketType.Texture].DripRate; | 255 | return m_info; |
254 | info.totalThrottle = (int)m_throttleCategory.DripRate; | ||
255 | |||
256 | return info; | ||
257 | } | 256 | } |
258 | 257 | ||
259 | /// <summary> | 258 | /// <summary> |