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.avinationmerge
parent
ffe5ede550
commit
42b2248960
|
@ -2002,6 +2002,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
uint circuitCode, UUID agentID, UUID sessionID, IPEndPoint remoteEndPoint, AuthenticateResponse sessionInfo)
|
||||
{
|
||||
IClientAPI client = null;
|
||||
bool createNew = false;
|
||||
|
||||
// We currently synchronize this code across the whole scene to avoid issues such as
|
||||
// http://opensimulator.org/mantis/view.php?id=5365 However, once locking per agent circuit can be done
|
||||
|
@ -2009,6 +2010,19 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
lock (this)
|
||||
{
|
||||
if (!m_scene.TryGetClient(agentID, out client))
|
||||
{
|
||||
createNew = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (client.SceneAgent == null)
|
||||
{
|
||||
m_scene.CloseAgent(agentID, true);
|
||||
createNew = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (createNew)
|
||||
{
|
||||
LLUDPClient udpClient = new LLUDPClient(this, ThrottleRates, m_throttle, circuitCode, agentID, remoteEndPoint, m_defaultRTO, m_maxRTO);
|
||||
|
||||
|
|
Loading…
Reference in New Issue