aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs')
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs39
1 files changed, 28 insertions, 11 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
index 544b54b..2a2c819 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
@@ -69,9 +69,22 @@ namespace OpenSim.Region.ClientStack.LindenUDP
69 69
70 StatsManager.RegisterStat( 70 StatsManager.RegisterStat(
71 new Stat( 71 new Stat(
72 "ClientLogoutsDueToNoReceives",
73 "Number of times a client has been logged out because no packets were received before the timeout.",
74 "",
75 "",
76 "clientstack",
77 scene.Name,
78 StatType.Pull,
79 MeasuresOfInterest.None,
80 stat => stat.Value = m_udpServer.ClientLogoutsDueToNoReceives,
81 StatVerbosity.Debug));
82
83 StatsManager.RegisterStat(
84 new Stat(
72 "IncomingUDPReceivesCount", 85 "IncomingUDPReceivesCount",
73 "Number of UDP receives performed", 86 "Number of UDP receives performed",
74 "Number of UDP receives performed", 87 "",
75 "", 88 "",
76 "clientstack", 89 "clientstack",
77 scene.Name, 90 scene.Name,
@@ -84,7 +97,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
84 new Stat( 97 new Stat(
85 "IncomingPacketsProcessedCount", 98 "IncomingPacketsProcessedCount",
86 "Number of inbound LL protocol packets processed", 99 "Number of inbound LL protocol packets processed",
87 "Number of inbound LL protocol packets processed", 100 "",
88 "", 101 "",
89 "clientstack", 102 "clientstack",
90 scene.Name, 103 scene.Name,
@@ -97,7 +110,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
97 new Stat( 110 new Stat(
98 "OutgoingUDPSendsCount", 111 "OutgoingUDPSendsCount",
99 "Number of UDP sends performed", 112 "Number of UDP sends performed",
100 "Number of UDP sends performed", 113 "",
101 "", 114 "",
102 "clientstack", 115 "clientstack",
103 scene.Name, 116 scene.Name,
@@ -149,6 +162,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
149 /// <summary>Maximum transmission unit, or UDP packet size, for the LLUDP protocol</summary> 162 /// <summary>Maximum transmission unit, or UDP packet size, for the LLUDP protocol</summary>
150 public const int MTU = 1400; 163 public const int MTU = 1400;
151 164
165 /// <summary>Number of forced client logouts due to no receipt of packets before timeout.</summary>
166 public int ClientLogoutsDueToNoReceives { get; private set; }
167
152 /// <summary> 168 /// <summary>
153 /// Default packet debug level given to new clients 169 /// Default packet debug level given to new clients
154 /// </summary> 170 /// </summary>
@@ -1058,7 +1074,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1058 // Fire this out on a different thread so that we don't hold up outgoing packet processing for 1074 // Fire this out on a different thread so that we don't hold up outgoing packet processing for
1059 // everybody else if this is being called due to an ack timeout. 1075 // everybody else if this is being called due to an ack timeout.
1060 // This is the same as processing as the async process of a logout request. 1076 // This is the same as processing as the async process of a logout request.
1061 Util.FireAndForget(o => DeactivateClientDueToTimeout(client)); 1077 Util.FireAndForget(o => DeactivateClientDueToTimeout(client, timeoutTicks));
1062 1078
1063 return; 1079 return;
1064 } 1080 }
@@ -1842,18 +1858,19 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1842 /// regular client pings. 1858 /// regular client pings.
1843 /// </remarks> 1859 /// </remarks>
1844 /// <param name='client'></param> 1860 /// <param name='client'></param>
1845 private void DeactivateClientDueToTimeout(LLClientView client) 1861 /// <param name='timeoutTicks'></param>
1862 private void DeactivateClientDueToTimeout(LLClientView client, int timeoutTicks)
1846 { 1863 {
1847 lock (client.CloseSyncLock) 1864 lock (client.CloseSyncLock)
1848 { 1865 {
1866 ClientLogoutsDueToNoReceives++;
1867
1849 m_log.WarnFormat( 1868 m_log.WarnFormat(
1850 "[LLUDPSERVER]: Ack timeout, disconnecting {0} agent for {1} in {2}", 1869 "[LLUDPSERVER]: No packets received from {0} agent of {1} for {2}ms in {3}. Disconnecting.",
1851 client.SceneAgent.IsChildAgent ? "child" : "root", client.Name, m_scene.RegionInfo.RegionName); 1870 client.SceneAgent.IsChildAgent ? "child" : "root", client.Name, timeoutTicks, m_scene.Name);
1852
1853 StatsManager.SimExtraStats.AddAbnormalClientThreadTermination();
1854 1871
1855 if (!client.SceneAgent.IsChildAgent) 1872 if (!client.SceneAgent.IsChildAgent)
1856 client.Kick("Simulator logged you out due to connection timeout"); 1873 client.Kick("Simulator logged you out due to connection timeout.");
1857 1874
1858 client.CloseWithoutChecks(true); 1875 client.CloseWithoutChecks(true);
1859 } 1876 }