diff options
author | Melanie Thielker | 2014-09-13 00:49:32 +0200 |
---|---|---|
committer | Melanie Thielker | 2014-09-13 00:49:32 +0200 |
commit | 42b2248960b9b8e539f551093ed2241ce8d3b68d (patch) | |
tree | ed66b88d0fec3832769fea9c9ffba0f9ac717c5a | |
parent | taskInventory request: give each transfer a diferent filename, Add more (diff) | |
download | opensim-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.cs | 14 |
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); |