aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack/Linden
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ClientStack/Linden')
-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 25e10be..85fe1a4 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>
@@ -1046,7 +1062,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1046 // Fire this out on a different thread so that we don't hold up outgoing packet processing for 1062 // Fire this out on a different thread so that we don't hold up outgoing packet processing for
1047 // everybody else if this is being called due to an ack timeout. 1063 // everybody else if this is being called due to an ack timeout.
1048 // This is the same as processing as the async process of a logout request. 1064 // This is the same as processing as the async process of a logout request.
1049 Util.FireAndForget(o => DeactivateClientDueToTimeout(client)); 1065 Util.FireAndForget(o => DeactivateClientDueToTimeout(client, timeoutTicks));
1050 1066
1051 return; 1067 return;
1052 } 1068 }
@@ -1770,18 +1786,19 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1770 /// regular client pings. 1786 /// regular client pings.
1771 /// </remarks> 1787 /// </remarks>
1772 /// <param name='client'></param> 1788 /// <param name='client'></param>
1773 private void DeactivateClientDueToTimeout(LLClientView client) 1789 /// <param name='timeoutTicks'></param>
1790 private void DeactivateClientDueToTimeout(LLClientView client, int timeoutTicks)
1774 { 1791 {
1775 lock (client.CloseSyncLock) 1792 lock (client.CloseSyncLock)
1776 { 1793 {
1794 ClientLogoutsDueToNoReceives++;
1795
1777 m_log.WarnFormat( 1796 m_log.WarnFormat(
1778 "[LLUDPSERVER]: Ack timeout, disconnecting {0} agent for {1} in {2}", 1797 "[LLUDPSERVER]: No packets received from {0} agent of {1} for {2}ms in {3}. Disconnecting.",
1779 client.SceneAgent.IsChildAgent ? "child" : "root", client.Name, m_scene.RegionInfo.RegionName); 1798 client.SceneAgent.IsChildAgent ? "child" : "root", client.Name, timeoutTicks, m_scene.Name);
1780
1781 StatsManager.SimExtraStats.AddAbnormalClientThreadTermination();
1782 1799
1783 if (!client.SceneAgent.IsChildAgent) 1800 if (!client.SceneAgent.IsChildAgent)
1784 client.Kick("Simulator logged you out due to connection timeout"); 1801 client.Kick("Simulator logged you out due to connection timeout.");
1785 1802
1786 client.CloseWithoutChecks(); 1803 client.CloseWithoutChecks();
1787 } 1804 }