* 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
Teravus Ovares 2008-02-21 20:22:25 +00:00
parent 0103c43697
commit d4905812bc
1 changed files with 11 additions and 4 deletions

View File

@ -238,7 +238,7 @@ namespace OpenSim.Region.ClientStack
# region Client Methods
private void CloseCleanup()
private void CloseCleanup(bool ShutdownCircult)
{
m_scene.RemoveClient(AgentId);
@ -268,8 +268,15 @@ namespace OpenSim.Region.ClientStack
// We can't reach into other scenes and close the connection
// We need to do this over grid communications
//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>
@ -286,7 +293,7 @@ namespace OpenSim.Region.ClientStack
if (ShutdownCircult)
OnConnectionClosed(this);
CloseCleanup();
CloseCleanup(ShutdownCircult);
}
public void Kick(string message)