* 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 # 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)