aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2011-08-31 23:33:01 +0100
committerJustin Clark-Casey (justincc)2011-08-31 23:33:01 +0100
commit083ba72b28fb424e1e3edbc90c6a79d49d2215bf (patch)
tree89f3ddbe1c701cad79540cd0b87f0c637ae1aeaa /OpenSim
parentDon't set a GridUser entry for NPCs. (diff)
downloadopensim-SC-083ba72b28fb424e1e3edbc90c6a79d49d2215bf.zip
opensim-SC-083ba72b28fb424e1e3edbc90c6a79d49d2215bf.tar.gz
opensim-SC-083ba72b28fb424e1e3edbc90c6a79d49d2215bf.tar.bz2
opensim-SC-083ba72b28fb424e1e3edbc90c6a79d49d2215bf.tar.xz
Fix a bug where the non-root parts of rezzed objects that had previously been attachments were sending their old attachment values to the client.
The root part state is the canonical value, so always send that instead. Sending conflicting attachments states for non-root parts of a rezzed object is enough to crash the client. Fixes http://opensimulator.org/mantis/view.php?id=5664. Many thanks to mewtwo0641 for some fantastic qa work on this one.
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs13
1 files changed, 12 insertions, 1 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index dc9a6ed..661e9db 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -4761,6 +4761,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4761 else 4761 else
4762 attachPoint = 0; 4762 attachPoint = 0;
4763 4763
4764// m_log.DebugFormat(
4765// "[LLCLIENTVIEW]: Sending attachPoint {0} for {1} {2} to {3}",
4766// attachPoint, part.Name, part.LocalId, Name);
4767
4764 collisionPlane = Vector4.Zero; 4768 collisionPlane = Vector4.Zero;
4765 position = part.RelativePosition; 4769 position = part.RelativePosition;
4766 velocity = part.Velocity; 4770 velocity = part.Velocity;
@@ -4925,9 +4929,16 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4925 else 4929 else
4926 { 4930 {
4927 update.NameValue = Utils.EmptyBytes; 4931 update.NameValue = Utils.EmptyBytes;
4928 update.State = data.Shape.State; 4932
4933 // The root part state is the canonical state for all parts of the object. The other part states in the
4934 // case for attachments may contain conflicting values that can end up crashing the viewer.
4935 update.State = data.ParentGroup.RootPart.Shape.State;
4929 } 4936 }
4930 4937
4938// m_log.DebugFormat(
4939// "[LLCLIENTVIEW]: Sending state {0} for {1} {2} to {3}",
4940// update.State, data.Name, data.LocalId, Name);
4941
4931 update.ObjectData = objectData; 4942 update.ObjectData = objectData;
4932 update.ParentID = data.ParentID; 4943 update.ParentID = data.ParentID;
4933 update.PathBegin = data.Shape.PathBegin; 4944 update.PathBegin = data.Shape.PathBegin;