diff options
Diffstat (limited to 'OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs')
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs | 27 |
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 | ||