diff options
author | Tom Grimshaw | 2010-07-17 15:08:59 -0700 |
---|---|---|
committer | Tom Grimshaw | 2010-07-17 15:08:59 -0700 |
commit | fabe2206db37be39a90254da8a7fff973f2dd977 (patch) | |
tree | ad91ef82e987e34f9746559342518610140b469d /OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs | |
parent | Revert 233c872.. "* Call client.Start() sunchronously. Calling thos async avo... (diff) | |
download | opensim-SC_OLD-fabe2206db37be39a90254da8a7fff973f2dd977.zip opensim-SC_OLD-fabe2206db37be39a90254da8a7fff973f2dd977.tar.gz opensim-SC_OLD-fabe2206db37be39a90254da8a7fff973f2dd977.tar.bz2 opensim-SC_OLD-fabe2206db37be39a90254da8a7fff973f2dd977.tar.xz |
Ensure that packets do NOT get delivered to a client before the modules that can deal with the client's response have finished loading.
Diffstat (limited to 'OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs')
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs index 6232c48..eebbfa5 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs | |||
@@ -149,6 +149,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
149 | 149 | ||
150 | private int m_defaultRTO = 3000; | 150 | private int m_defaultRTO = 3000; |
151 | private int m_maxRTO = 60000; | 151 | private int m_maxRTO = 60000; |
152 | public bool m_deliverPackets = true; | ||
152 | 153 | ||
153 | /// <summary> | 154 | /// <summary> |
154 | /// Default constructor | 155 | /// Default constructor |
@@ -389,6 +390,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
389 | if (category >= 0 && category < m_packetOutboxes.Length) | 390 | if (category >= 0 && category < m_packetOutboxes.Length) |
390 | { | 391 | { |
391 | OpenSim.Framework.LocklessQueue<OutgoingPacket> queue = m_packetOutboxes[category]; | 392 | OpenSim.Framework.LocklessQueue<OutgoingPacket> queue = m_packetOutboxes[category]; |
393 | |||
394 | if (m_deliverPackets == false) | ||
395 | { | ||
396 | queue.Enqueue(packet); | ||
397 | return true; | ||
398 | } | ||
399 | |||
392 | TokenBucket bucket = m_throttleCategories[category]; | 400 | TokenBucket bucket = m_throttleCategories[category]; |
393 | 401 | ||
394 | if (bucket.RemoveTokens(packet.Buffer.DataLength)) | 402 | if (bucket.RemoveTokens(packet.Buffer.DataLength)) |
@@ -419,6 +427,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
419 | /// <returns>True if any packets were sent, otherwise false</returns> | 427 | /// <returns>True if any packets were sent, otherwise false</returns> |
420 | public bool DequeueOutgoing() | 428 | public bool DequeueOutgoing() |
421 | { | 429 | { |
430 | if (m_deliverPackets == false) return false; | ||
431 | |||
422 | OutgoingPacket packet; | 432 | OutgoingPacket packet; |
423 | OpenSim.Framework.LocklessQueue<OutgoingPacket> queue; | 433 | OpenSim.Framework.LocklessQueue<OutgoingPacket> queue; |
424 | TokenBucket bucket; | 434 | TokenBucket bucket; |