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 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 | ||