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