diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 1e111e5f2f..5465ca4b4b 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -3164,16 +3164,25 @@ namespace OpenSim.Region.Framework.Scenes public void SendKillObject(uint localID) { SceneObjectPart part = GetSceneObjectPart(localID); + UUID attachedAvatar = UUID.Zero; + if (part != null) // It is a prim { if (!part.ParentGroup.IsDeleted) // Valid { if (part.ParentGroup.RootPart != part) // Child part return; + + if (part.ParentGroup.IsAttachment && part.ParentGroup.AttachmentPoint >= 31 && part.ParentGroup.AttachmentPoint <= 38) + attachedAvatar = part.ParentGroup.AttachedAvatar; } } - ForEachClient(delegate(IClientAPI client) { client.SendKillObject(m_regionHandle, localID); }); + ForEachClient(delegate(IClientAPI client) + { + if (attachedAvatar == UUID.Zero || attachedAvatar == client.AgentId) + client.SendKillObject(m_regionHandle, localID); + }); } #endregion diff --git a/OpenSim/Services/AssetService/AssetService.cs b/OpenSim/Services/AssetService/AssetService.cs index 2ea513bd18..b3af8e3015 100644 --- a/OpenSim/Services/AssetService/AssetService.cs +++ b/OpenSim/Services/AssetService/AssetService.cs @@ -117,7 +117,15 @@ namespace OpenSim.Services.AssetService return null; } - return m_Database.GetAsset(assetID); + try + { + return m_Database.GetAsset(assetID); + } + catch (Exception e) + { + m_log.ErrorFormat("[ASSET SERVICE]: Exception getting asset {0} {1}", assetID, e); + return null; + } } public virtual AssetBase GetCached(string id)