aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2012-10-10 00:26:43 +0100
committerJustin Clark-Casey (justincc)2012-10-10 00:26:43 +0100
commite76b01a201a9b2d45b56cd5dc2a207b08b4529e5 (patch)
tree81bff879c3bc3eec19ff0bde5d5029014cc8b9f4 /OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
parentminor: elaborate method doc on Scene.NewUserConnection() (diff)
downloadopensim-SC_OLD-e76b01a201a9b2d45b56cd5dc2a207b08b4529e5.zip
opensim-SC_OLD-e76b01a201a9b2d45b56cd5dc2a207b08b4529e5.tar.gz
opensim-SC_OLD-e76b01a201a9b2d45b56cd5dc2a207b08b4529e5.tar.bz2
opensim-SC_OLD-e76b01a201a9b2d45b56cd5dc2a207b08b4529e5.tar.xz
Lock on AgentCircuitData during Scene.AddClient() and RemoveClient() to prevent an inactive connection being left behind if the user closes the viewer whilst the connection is being established.
This should remove the need to run the console command "kick user --force" when these connections are left around.
Diffstat (limited to 'OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs')
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs14
1 files changed, 7 insertions, 7 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
index d11fcbf..ab670a7 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
@@ -1103,20 +1103,20 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1103 { 1103 {
1104 IClientAPI client = null; 1104 IClientAPI client = null;
1105 1105
1106 // In priciple there shouldn't be more than one thread here, ever. 1106 // We currently synchronize this code across the whole scene to avoid issues such as
1107 // But in case that happens, we need to synchronize this piece of code 1107 // http://opensimulator.org/mantis/view.php?id=5365 However, once locking per agent circuit can be done
1108 // because it's too important 1108 // consistently, this lock could probably be removed.
1109 lock (this) 1109 lock (this)
1110 { 1110 {
1111 if (!m_scene.TryGetClient(agentID, out client)) 1111 if (!m_scene.TryGetClient(agentID, out client))
1112 { 1112 {
1113 LLUDPClient udpClient = new LLUDPClient(this, ThrottleRates, m_throttle, circuitCode, agentID, remoteEndPoint, m_defaultRTO, m_maxRTO); 1113 LLUDPClient udpClient = new LLUDPClient(this, ThrottleRates, m_throttle, circuitCode, agentID, remoteEndPoint, m_defaultRTO, m_maxRTO);
1114 1114
1115 client = new LLClientView(m_scene, this, udpClient, sessionInfo, agentID, sessionID, circuitCode); 1115 client = new LLClientView(m_scene, this, udpClient, sessionInfo, agentID, sessionID, circuitCode);
1116 client.OnLogout += LogoutHandler; 1116 client.OnLogout += LogoutHandler;
1117 1117
1118 ((LLClientView)client).DisableFacelights = m_disableFacelights; 1118 ((LLClientView)client).DisableFacelights = m_disableFacelights;
1119 1119
1120 client.Start(); 1120 client.Start();
1121 } 1121 }
1122 } 1122 }