aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorMelanie Thielker2014-09-13 00:49:32 +0200
committerMelanie Thielker2014-09-13 00:49:32 +0200
commit42b2248960b9b8e539f551093ed2241ce8d3b68d (patch)
treeed66b88d0fec3832769fea9c9ffba0f9ac717c5a
parenttaskInventory request: give each transfer a diferent filename, Add more (diff)
downloadopensim-SC-42b2248960b9b8e539f551093ed2241ce8d3b68d.zip
opensim-SC-42b2248960b9b8e539f551093ed2241ce8d3b68d.tar.gz
opensim-SC-42b2248960b9b8e539f551093ed2241ce8d3b68d.tar.bz2
opensim-SC-42b2248960b9b8e539f551093ed2241ce8d3b68d.tar.xz
If a client's SceneAgent is null, that client is not fully logged in or
crashed while logging out. Don't reuse it, create a new one.
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs14
1 files changed, 14 insertions, 0 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
index 9b3802d..5ce82a5 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
@@ -2002,6 +2002,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
2002 uint circuitCode, UUID agentID, UUID sessionID, IPEndPoint remoteEndPoint, AuthenticateResponse sessionInfo) 2002 uint circuitCode, UUID agentID, UUID sessionID, IPEndPoint remoteEndPoint, AuthenticateResponse sessionInfo)
2003 { 2003 {
2004 IClientAPI client = null; 2004 IClientAPI client = null;
2005 bool createNew = false;
2005 2006
2006 // We currently synchronize this code across the whole scene to avoid issues such as 2007 // We currently synchronize this code across the whole scene to avoid issues such as
2007 // http://opensimulator.org/mantis/view.php?id=5365 However, once locking per agent circuit can be done 2008 // http://opensimulator.org/mantis/view.php?id=5365 However, once locking per agent circuit can be done
@@ -2010,6 +2011,19 @@ namespace OpenSim.Region.ClientStack.LindenUDP
2010 { 2011 {
2011 if (!m_scene.TryGetClient(agentID, out client)) 2012 if (!m_scene.TryGetClient(agentID, out client))
2012 { 2013 {
2014 createNew = true;
2015 }
2016 else
2017 {
2018 if (client.SceneAgent == null)
2019 {
2020 m_scene.CloseAgent(agentID, true);
2021 createNew = true;
2022 }
2023 }
2024
2025 if (createNew)
2026 {
2013 LLUDPClient udpClient = new LLUDPClient(this, ThrottleRates, m_throttle, circuitCode, agentID, remoteEndPoint, m_defaultRTO, m_maxRTO); 2027 LLUDPClient udpClient = new LLUDPClient(this, ThrottleRates, m_throttle, circuitCode, agentID, remoteEndPoint, m_defaultRTO, m_maxRTO);
2014 2028
2015 client = new LLClientView(m_scene, this, udpClient, sessionInfo, agentID, sessionID, circuitCode); 2029 client = new LLClientView(m_scene, this, udpClient, sessionInfo, agentID, sessionID, circuitCode);