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