aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2010-09-17 01:16:21 +0100
committerJustin Clark-Casey (justincc)2010-09-17 01:16:21 +0100
commit50724292636c1ee68e2d3d215285b52606c6e7f5 (patch)
tree0eb92cc6862d16cf9f7419c00b83f6bb6a9431f9 /OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
parentMerge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff)
downloadopensim-SC-50724292636c1ee68e2d3d215285b52606c6e7f5.zip
opensim-SC-50724292636c1ee68e2d3d215285b52606c6e7f5.tar.gz
opensim-SC-50724292636c1ee68e2d3d215285b52606c6e7f5.tar.bz2
opensim-SC-50724292636c1ee68e2d3d215285b52606c6e7f5.tar.xz
Send KillPackets on the Task queue rather than the State queue
Object updates are sent on the task queue. It's possible for an object update to be placed on the client queue before a kill packet comes along. The kill packet would then be placed on the state queue and possibly get sent before the update If the update gets sent afterwards then client get undeletable no owner objects until relog Placing the kills in the task queue should mean that they are received after updates. The kill record prevents subsequent updates getting on the queue Comments state that updates are sent via the state queue but this isn't true. If this was the case this problem might not exist.
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs7
1 files changed, 6 insertions, 1 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 2163c12..cede050 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -1523,7 +1523,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1523 lock (m_entityUpdates.SyncRoot) 1523 lock (m_entityUpdates.SyncRoot)
1524 { 1524 {
1525 m_killRecord.Add(localID); 1525 m_killRecord.Add(localID);
1526 OutPacket(kill, ThrottleOutPacketType.State); 1526
1527 // The throttle queue used here must match that being used for updates. Otherwise, there is a
1528 // chance that a kill packet put on a separate queue will be sent to the client before an existing
1529 // update packet on another queue. Receiving updates after kills results in unowned and undeletable
1530 // scene objects in a viewer until that viewer is relogged in.
1531 OutPacket(kill, ThrottleOutPacketType.Task);
1527 } 1532 }
1528 } 1533 }
1529 } 1534 }