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 ca5a297..209e35c 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
@@ -904,7 +904,30 @@ namespace OpenSim.Region.ClientStack.LindenUDP
904 client.DisableFacelights = m_disableFacelights; 904 client.DisableFacelights = m_disableFacelights;
905 905
906 // Start the IClientAPI 906 // Start the IClientAPI
907 client.Start(); 907 // Spin it off so that it doesn't clog up the LLUDPServer
908
909 //First, and very importantly:
910 //
911 //Set our DeliverPackets flag in the client to *false*
912 //this will prevent us from missing important messages
913 //before the modules are bound
914 client.DeliverPackets = false;
915 client.DisableFacelights = m_disableFacelights;
916
917 Util.FireAndForget(
918 delegate
919 {
920 try
921 {
922 client.Start();
923 }
924 finally
925 {
926 //Now, release the hounds. er, packets.
927 client.DeliverPackets = true;
928 }
929 }
930 );
908 } 931 }
909 else 932 else
910 { 933 {
@@ -920,7 +943,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
920 if (m_scene.TryGetClient(udpClient.AgentID, out client)) 943 if (m_scene.TryGetClient(udpClient.AgentID, out client))
921 { 944 {
922 client.IsLoggingOut = true; 945 client.IsLoggingOut = true;
923 client.Close(); 946 client.Close(false);
924 } 947 }
925 } 948 }
926 949