diff options
author | Justin Clark-Casey (justincc) | 2012-10-10 00:26:43 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2012-10-10 00:26:43 +0100 |
commit | e76b01a201a9b2d45b56cd5dc2a207b08b4529e5 (patch) | |
tree | 81bff879c3bc3eec19ff0bde5d5029014cc8b9f4 /OpenSim/Region/ClientStack/Linden/UDP | |
parent | minor: elaborate method doc on Scene.NewUserConnection() (diff) | |
download | opensim-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')
-rw-r--r-- | OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs | 14 |
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 | } |