From ff429a259b41f1205a6b153bb6da383d9a9f5daf Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Wed, 23 May 2012 01:58:10 +0100
Subject: Fix bug where an avatar that had an object they owned attached
through llAttachToAvatar() or osForceAttachToAvatar() would wrongly have next
permissions come into play when they detached that object and rezzed it in
scene.
This is because the attachments module code was setting the 'object slam' bit by using PermissionMask.All
Solution here is to route the attachment item creation call through the existing inventory code in BasicInventoryAccessModule rather than copy/pasted code in AttachmentsModule itself.
---
OpenSim/Region/Framework/Interfaces/IInventoryAccessModule.cs | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
(limited to 'OpenSim/Region/Framework/Interfaces')
diff --git a/OpenSim/Region/Framework/Interfaces/IInventoryAccessModule.cs b/OpenSim/Region/Framework/Interfaces/IInventoryAccessModule.cs
index 1904011..3576e35 100644
--- a/OpenSim/Region/Framework/Interfaces/IInventoryAccessModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IInventoryAccessModule.cs
@@ -49,11 +49,15 @@ namespace OpenSim.Region.Framework.Interfaces
///
///
///
+ ///
+ /// Should be true if the object(s) are begin taken as attachments. False otherwise.
+ ///
///
- /// Returns the UUID of the newly created item asset (not the item itself).
- /// FIXME: This is not very useful. It would be far more useful to return a list of items instead.
+ /// A list of the items created. If there was more than one object and objects are not being coaleseced in
+ /// inventory, then the order of items is in the same order as the input objects.
///
- UUID CopyToInventory(DeRezAction action, UUID folderID, List objectGroups, IClientAPI remoteClient);
+ List CopyToInventory(
+ DeRezAction action, UUID folderID, List objectGroups, IClientAPI remoteClient, bool asAttachment);
///
/// Rez an object into the scene from the user's inventory
--
cgit v1.1
From 682d4075e3fe7c52d4c29d00ba9dc0456b7322f3 Mon Sep 17 00:00:00 2001
From: BlueWall
Date: Wed, 23 May 2012 15:07:03 -0400
Subject: Fix llGetSimulatorHostname to return configured hostname
---
OpenSim/Region/Framework/Interfaces/IUrlModule.cs | 1 +
1 file changed, 1 insertion(+)
(limited to 'OpenSim/Region/Framework/Interfaces')
diff --git a/OpenSim/Region/Framework/Interfaces/IUrlModule.cs b/OpenSim/Region/Framework/Interfaces/IUrlModule.cs
index 1b91166..457444c 100644
--- a/OpenSim/Region/Framework/Interfaces/IUrlModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IUrlModule.cs
@@ -34,6 +34,7 @@ namespace OpenSim.Region.Framework.Interfaces
{
public interface IUrlModule
{
+ string ExternalHostNameForLSL { get; }
UUID RequestURL(IScriptModule engine, SceneObjectPart host, UUID itemID);
UUID RequestSecureURL(IScriptModule engine, SceneObjectPart host, UUID itemID);
void ReleaseURL(string url);
--
cgit v1.1
From bc543c1797c629a8584dd2e74d3c5f7a67de96c9 Mon Sep 17 00:00:00 2001
From: PixelTomsen
Date: Wed, 23 May 2012 21:06:25 +0200
Subject: Environment Module - allows Environment settings for Viewer3 warning:
includes database region store migrations for mssql, mysql, sqlite
enable/disable this module:
Cap_EnvironmentSettings = "localhost" (for enable)
Cap_EnvironmentSettings = "" (for disable) at ClientStack.LindenCaps section (OpenSimDefaults.ini file)
or owerwrite in OpenSim.ini
mantis: http://opensimulator.org/mantis/view.php?id=5860
Signed-off-by: BlueWall
---
.../Framework/Interfaces/IEnvironmentModule.cs | 36 ++++++++++++++++++++++
.../Framework/Interfaces/ISimulationDataService.cs | 21 +++++++++++++
.../Framework/Interfaces/ISimulationDataStore.cs | 20 ++++++++++++
3 files changed, 77 insertions(+)
create mode 100644 OpenSim/Region/Framework/Interfaces/IEnvironmentModule.cs
(limited to 'OpenSim/Region/Framework/Interfaces')
diff --git a/OpenSim/Region/Framework/Interfaces/IEnvironmentModule.cs b/OpenSim/Region/Framework/Interfaces/IEnvironmentModule.cs
new file mode 100644
index 0000000..7a7b782
--- /dev/null
+++ b/OpenSim/Region/Framework/Interfaces/IEnvironmentModule.cs
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * See CONTRIBUTORS.TXT for a full list of copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the OpenSimulator Project nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using OpenMetaverse;
+
+namespace OpenSim.Region.Framework.Interfaces
+{
+ public interface IEnvironmentModule
+ {
+ void ResetEnvironmentSettings(UUID regionUUID);
+ }
+}
diff --git a/OpenSim/Region/Framework/Interfaces/ISimulationDataService.cs b/OpenSim/Region/Framework/Interfaces/ISimulationDataService.cs
index 5295a72..0fcafcc 100644
--- a/OpenSim/Region/Framework/Interfaces/ISimulationDataService.cs
+++ b/OpenSim/Region/Framework/Interfaces/ISimulationDataService.cs
@@ -95,5 +95,26 @@ namespace OpenSim.Region.Framework.Interfaces
RegionLightShareData LoadRegionWindlightSettings(UUID regionUUID);
void StoreRegionWindlightSettings(RegionLightShareData wl);
void RemoveRegionWindlightSettings(UUID regionID);
+
+ ///
+ /// Load Environment settings from region storage
+ ///
+ /// the region UUID
+ /// LLSD string for viewer
+ string LoadRegionEnvironmentSettings(UUID regionUUID);
+
+ ///
+ /// Store Environment settings into region storage
+ ///
+ /// the region UUID
+ /// LLSD string from viewer
+ void StoreRegionEnvironmentSettings(UUID regionUUID, string settings);
+
+ ///
+ /// Delete Environment settings from region storage
+ ///
+ /// the region UUID
+ void RemoveRegionEnvironmentSettings(UUID regionUUID);
+
}
}
diff --git a/OpenSim/Region/Framework/Interfaces/ISimulationDataStore.cs b/OpenSim/Region/Framework/Interfaces/ISimulationDataStore.cs
index 615f377..e424976 100644
--- a/OpenSim/Region/Framework/Interfaces/ISimulationDataStore.cs
+++ b/OpenSim/Region/Framework/Interfaces/ISimulationDataStore.cs
@@ -107,6 +107,26 @@ namespace OpenSim.Region.Framework.Interfaces
void StoreRegionWindlightSettings(RegionLightShareData wl);
void RemoveRegionWindlightSettings(UUID regionID);
+ ///
+ /// Load Environment settings from region storage
+ ///
+ /// the region UUID
+ /// LLSD string for viewer
+ string LoadRegionEnvironmentSettings(UUID regionUUID);
+
+ ///
+ /// Store Environment settings into region storage
+ ///
+ /// the region UUID
+ /// LLSD string from viewer
+ void StoreRegionEnvironmentSettings(UUID regionUUID, string settings);
+
+ ///
+ /// Delete Environment settings from region storage
+ ///
+ /// the region UUID
+ void RemoveRegionEnvironmentSettings(UUID regionUUID);
+
void Shutdown();
}
}
--
cgit v1.1
From 459c7635afdbc4002cacbf5780185645a4296f6a Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Thu, 24 May 2012 00:31:14 +0100
Subject: If an agent is still registered as 'in transit' by the source region,
don't allow an immediate teleport back.
This is to help relieve a race condition when an agent teleports then immediately attempts to teleport back before the source region has properly cleaned up/demoted the old ScenePresence.
This is rare in viewers but much more possible via scripting or region module.
However, more needs to be done since virtually all clean up happens after the transit flag is cleared .
Possibly need to add a 'cleaning up' state to in transit.
This change required making the EntityTransferModule and HGEntityTransferModule per-region rather than shared, in order to allow separate transit lists.
Changes were also required in LocalSimulationConnector.
Tested in standalone, grid and with local and remote region crossings with attachments.
---
OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs | 7 +++++++
1 file changed, 7 insertions(+)
(limited to 'OpenSim/Region/Framework/Interfaces')
diff --git a/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs b/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs
index 18e9e3c..75c44d5 100644
--- a/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs
@@ -74,6 +74,13 @@ namespace OpenSim.Region.Framework.Interfaces
///
void TeleportHome(UUID id, IClientAPI client);
+ ///
+ /// Show whether the given agent is being teleported.
+ ///
+ /// true if the agent is in the process of being teleported, false otherwise.
+ /// The agent ID
+ bool IsInTransit(UUID id);
+
bool Cross(ScenePresence agent, bool isFlying);
void AgentArrivedAtDestination(UUID agent);
--
cgit v1.1
From 40c78b06246d1131e07982dc6a9366666d9ea031 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 25 May 2012 02:02:53 +0100
Subject: Stop it being possible for an agent to teleport back to its source
region before the source region has finished cleaning up old agent data and
structures.
If this is allowed, then the client usually gets forcibly logged out and data structures might be put into bad states.
To prevent this, the binary state machine of EMT.m_agentsInTransit is replaced with a 4 state machine (Preparing, Transferring, ReceivedAtDestination, CleaningUp).
This is necessary because the source region needs to know when the destination region has received the user but a teleport back cannot happen until the source region has cleaned up.
Tested on standalone, grid and with v1 and v3 clients.
---
OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'OpenSim/Region/Framework/Interfaces')
diff --git a/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs b/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs
index 75c44d5..69be83e 100644
--- a/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs
@@ -77,8 +77,8 @@ namespace OpenSim.Region.Framework.Interfaces
///
/// Show whether the given agent is being teleported.
///
- /// true if the agent is in the process of being teleported, false otherwise.
/// The agent ID
+ /// true if the agent is in the process of being teleported, false otherwise.
bool IsInTransit(UUID id);
bool Cross(ScenePresence agent, bool isFlying);
--
cgit v1.1
From ff53add54dbc666e585b928ba51b4babb7441611 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Sat, 26 May 2012 00:36:01 +0100
Subject: refactor: replace LSL_Api.InventoryKey(string) largely with
SceneObjectPartInventory.GetInventoryItem(string)
Also gets llStopAnimation() to call KeyOrName rather than duplicating logic.
---
OpenSim/Region/Framework/Interfaces/IEntityInventory.cs | 13 +++++++++++++
1 file changed, 13 insertions(+)
(limited to 'OpenSim/Region/Framework/Interfaces')
diff --git a/OpenSim/Region/Framework/Interfaces/IEntityInventory.cs b/OpenSim/Region/Framework/Interfaces/IEntityInventory.cs
index 30ed7d1..4370fcc 100644
--- a/OpenSim/Region/Framework/Interfaces/IEntityInventory.cs
+++ b/OpenSim/Region/Framework/Interfaces/IEntityInventory.cs
@@ -164,6 +164,19 @@ namespace OpenSim.Region.Framework.Interfaces
List GetInventoryItems();
///
+ /// Gets an inventory item by name
+ ///
+ ///
+ /// This method returns the first inventory item that matches the given name. In SL this is all you need
+ /// since each item in a prim inventory must have a unique name.
+ ///
+ ///
+ ///
+ /// The inventory item. Null if no such item was found.
+ ///
+ TaskInventoryItem GetInventoryItem(string name);
+
+ ///
/// Get inventory items by name.
///
///
--
cgit v1.1