From 0091c37ed3fd3f9ed4edf079a61f986daadca16b Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Fri, 27 Jan 2017 20:21:24 +0000 Subject: several changes relative to objects return and parcel prim counts: avoid null refs, report correct count of returned objects, make obkects counts by ownership coerent with return rules, etc --- OpenSim/Region/Framework/Scenes/Scene.Permissions.cs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes/Scene.Permissions.cs') diff --git a/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs b/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs index 45d710a..6d3b82f 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs @@ -54,7 +54,7 @@ namespace OpenSim.Region.Framework.Scenes public delegate bool EditObjectInventoryHandler(UUID objectID, UUID editorID); public delegate bool MoveObjectHandler(SceneObjectGroup sog, ScenePresence sp); public delegate bool ObjectEntryHandler(SceneObjectGroup sog, bool enteringRegion, Vector3 newPoint); - public delegate bool ReturnObjectsHandler(ILandObject land, UUID user, List objects); + public delegate bool ReturnObjectsHandler(ILandObject land, ScenePresence sp, List objects); public delegate bool InstantMessageHandler(UUID user, UUID target); public delegate bool InventoryTransferHandler(UUID user, UUID target); public delegate bool ViewScriptHandler(UUID script, UUID objectID, UUID user); @@ -556,17 +556,24 @@ namespace OpenSim.Region.Framework.Scenes #endregion #region RETURN OBJECT - public bool CanReturnObjects(ILandObject land, UUID user, List objects) + public bool CanReturnObjects(ILandObject land, IClientAPI client, List objects) { bool result = true; ReturnObjectsHandler handler = OnReturnObjects; if (handler != null) { + if(objects == null) + return false; + + ScenePresence sp = null; + if(client != null && client.SceneAgent != null) + sp = client.SceneAgent as ScenePresence; + Delegate[] list = handler.GetInvocationList(); foreach (ReturnObjectsHandler h in list) { - if (h(land, user, objects) == false) + if (h(land, sp, objects) == false) { result = false; break; -- cgit v1.1