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 821f679..b8c692f 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
@@ -918,7 +918,30 @@ namespace OpenSim.Region.ClientStack.LindenUDP
918 client.DisableFacelights = m_disableFacelights; 918 client.DisableFacelights = m_disableFacelights;
919 919
920 // Start the IClientAPI 920 // Start the IClientAPI
921 client.Start(); 921 // Spin it off so that it doesn't clog up the LLUDPServer
922
923 //First, and very importantly:
924 //
925 //Set our DeliverPackets flag in the client to *false*
926 //this will prevent us from missing important messages
927 //before the modules are bound
928 client.DeliverPackets = false;
929 client.DisableFacelights = m_disableFacelights;
930
931 Util.FireAndForget(
932 delegate
933 {
934 try
935 {
936 client.Start();
937 }
938 finally
939 {
940 //Now, release the hounds. er, packets.
941 client.DeliverPackets = true;
942 }
943 }
944 );
922 } 945 }
923 else 946 else
924 { 947 {
@@ -934,7 +957,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
934 if (m_scene.TryGetClient(udpClient.AgentID, out client)) 957 if (m_scene.TryGetClient(udpClient.AgentID, out client))
935 { 958 {
936 client.IsLoggingOut = true; 959 client.IsLoggingOut = true;
937 client.Close(); 960 client.Close(false);
938 } 961 }
939 } 962 }
940 963