aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs')
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs27
1 files changed, 25 insertions, 2 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
index cb298fd..e2cda6d 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
@@ -912,7 +912,30 @@ namespace OpenSim.Region.ClientStack.LindenUDP
912 client.DisableFacelights = m_disableFacelights; 912 client.DisableFacelights = m_disableFacelights;
913 913
914 // Start the IClientAPI 914 // Start the IClientAPI
915 client.Start(); 915 // Spin it off so that it doesn't clog up the LLUDPServer
916
917 //First, and very importantly:
918 //
919 //Set our DeliverPackets flag in the client to *false*
920 //this will prevent us from missing important messages
921 //before the modules are bound
922 client.DeliverPackets = false;
923 client.DisableFacelights = m_disableFacelights;
924
925 Util.FireAndForget(
926 delegate
927 {
928 try
929 {
930 client.Start();
931 }
932 finally
933 {
934 //Now, release the hounds. er, packets.
935 client.DeliverPackets = true;
936 }
937 }
938 );
916 } 939 }
917 else 940 else
918 { 941 {
@@ -928,7 +951,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
928 if (m_scene.TryGetClient(udpClient.AgentID, out client)) 951 if (m_scene.TryGetClient(udpClient.AgentID, out client))
929 { 952 {
930 client.IsLoggingOut = true; 953 client.IsLoggingOut = true;
931 client.Close(); 954 client.Close(false);
932 } 955 }
933 } 956 }
934 957