aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ClientStack')
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs18
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs27
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>