* Fixed an issue where the client thread was aborted before the UDP server sends a message back to ClientView to close it a second time. (yes we call close twice because there are times when the client closes with a logout and disconnects immediately which causes the UDP server to send a close request to the client thread)
* This update might make things better, it might expose another issue.ThreadPoolClientBranch
parent
0103c43697
commit
d4905812bc
|
@ -238,7 +238,7 @@ namespace OpenSim.Region.ClientStack
|
||||||
|
|
||||||
# region Client Methods
|
# region Client Methods
|
||||||
|
|
||||||
private void CloseCleanup()
|
private void CloseCleanup(bool ShutdownCircult)
|
||||||
{
|
{
|
||||||
m_scene.RemoveClient(AgentId);
|
m_scene.RemoveClient(AgentId);
|
||||||
|
|
||||||
|
@ -268,8 +268,15 @@ namespace OpenSim.Region.ClientStack
|
||||||
// We can't reach into other scenes and close the connection
|
// We can't reach into other scenes and close the connection
|
||||||
// We need to do this over grid communications
|
// We need to do this over grid communications
|
||||||
//m_scene.CloseAllAgents(CircuitCode);
|
//m_scene.CloseAllAgents(CircuitCode);
|
||||||
GC.Collect();
|
|
||||||
m_clientThread.Abort();
|
// If we're not shutting down the circuit, then this is the last time we'll go here.
|
||||||
|
// If we are shutting down the circuit, the UDP Server will come back here with
|
||||||
|
// ShutDownCircuit = false
|
||||||
|
if (!(ShutdownCircult))
|
||||||
|
{
|
||||||
|
GC.Collect();
|
||||||
|
m_clientThread.Abort();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -286,7 +293,7 @@ namespace OpenSim.Region.ClientStack
|
||||||
if (ShutdownCircult)
|
if (ShutdownCircult)
|
||||||
OnConnectionClosed(this);
|
OnConnectionClosed(this);
|
||||||
|
|
||||||
CloseCleanup();
|
CloseCleanup(ShutdownCircult);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Kick(string message)
|
public void Kick(string message)
|
||||||
|
|
Loading…
Reference in New Issue