diff options
author | Justin Clark-Casey (justincc) | 2011-08-31 23:33:01 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2011-08-31 23:33:01 +0100 |
commit | 083ba72b28fb424e1e3edbc90c6a79d49d2215bf (patch) | |
tree | 89f3ddbe1c701cad79540cd0b87f0c637ae1aeaa /OpenSim/Region | |
parent | Don't set a GridUser entry for NPCs. (diff) | |
download | opensim-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/Region')
-rw-r--r-- | OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | 13 |
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; |