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