diff --git a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs
index 7bc59fc81d..cf0c28b8a8 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs
@@ -94,6 +94,7 @@ namespace OpenSim.Region.ClientStack.Linden
private static readonly string m_notecardUpdatePath = "0004/";
private static readonly string m_notecardTaskUpdatePath = "0005/";
// private static readonly string m_fetchInventoryPath = "0006/";
+ private static readonly string m_copyFromNotecardPath = "0007/";
// private static readonly string m_remoteParcelRequestPath = "0009/";// This is in the LandManagementModule.
@@ -180,6 +181,7 @@ namespace OpenSim.Region.ClientStack.Linden
m_HostCapsObj.RegisterHandler("UpdateNotecardAgentInventory", req);
m_HostCapsObj.RegisterHandler("UpdateScriptAgentInventory", req);
m_HostCapsObj.RegisterHandler("UpdateScriptAgent", req);
+ m_HostCapsObj.RegisterHandler("CopyInventoryFromNotecard", new RestStreamHandler("POST", capsBase + m_copyFromNotecardPath, CopyInventoryFromNotecard));
// As of RC 1.22.9 of the Linden client this is
// supported
@@ -723,6 +725,75 @@ namespace OpenSim.Region.ClientStack.Linden
return LLSDHelpers.SerialiseLLSDReply(uploadResponse);
}
+
+ ///
+ /// Called by the CopyInventoryFromNotecard caps handler.
+ ///
+ ///
+ ///
+ ///
+ public string CopyInventoryFromNotecard(string request, string path, string param,
+ IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
+ {
+ Hashtable response = new Hashtable();
+ response["int_response_code"] = 404;
+ response["content_type"] = "text/plain";
+ response["keepalive"] = false;
+ response["str_response_string"] = "";
+
+ try
+ {
+ OSDMap content = (OSDMap)OSDParser.DeserializeLLSDXml(request);
+ UUID objectID = content["object-id"].AsUUID();
+ UUID notecardID = content["notecard-id"].AsUUID();
+ UUID folderID = content["folder-id"].AsUUID();
+ UUID itemID = content["item-id"].AsUUID();
+
+ // m_log.InfoFormat("[CAPS]: CopyInventoryFromNotecard, FolderID:{0}, ItemID:{1}, NotecardID:{2}, ObjectID:{3}", folderID, itemID, notecardID, objectID);
+
+ if (objectID != UUID.Zero)
+ {
+ SceneObjectPart part = m_Scene.GetSceneObjectPart(objectID);
+ if (part != null)
+ {
+ TaskInventoryItem taskItem = part.Inventory.GetInventoryItem(notecardID);
+ if (!m_Scene.Permissions.CanCopyObjectInventory(notecardID, objectID, m_HostCapsObj.AgentID))
+ {
+ return LLSDHelpers.SerialiseLLSDReply(response);
+ }
+ }
+ }
+
+ InventoryItemBase item = null;
+ InventoryItemBase copyItem = null;
+ IClientAPI client = null;
+
+ m_Scene.TryGetClient(m_HostCapsObj.AgentID, out client);
+ item = m_Scene.InventoryService.GetItem(new InventoryItemBase(itemID));
+ if (item != null)
+ {
+ copyItem = m_Scene.GiveInventoryItem(m_HostCapsObj.AgentID, item.Owner, itemID, folderID);
+ if (copyItem != null && client != null)
+ {
+ m_log.InfoFormat("[CAPS]: CopyInventoryFromNotecard, ItemID:{0}, FolderID:{1}", copyItem.ID, copyItem.Folder);
+ client.SendBulkUpdateInventory(copyItem);
+ }
+ }
+ else
+ {
+ m_log.ErrorFormat("[CAPS]: CopyInventoryFromNotecard - Failed to retrieve item {0} from notecard {1}", itemID, notecardID);
+ if (client != null)
+ client.SendAlertMessage("Failed to retrieve item");
+ }
+ }
+ catch (Exception e)
+ {
+ m_log.ErrorFormat("[CAPS]: CopyInventoryFromNotecard : {0}", e.ToString());
+ }
+
+ response["int_response_code"] = 200;
+ return LLSDHelpers.SerialiseLLSDReply(response);
+ }
}
public class AssetUploader
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
index 80cb623292..f1399afe01 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
@@ -209,8 +209,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
foreach (SceneObjectGroup grp in sp.GetAttachments())
{
- if (grp.IsDeleted)
- sp.Scene.EventManager.TriggerOnScriptChangedEvent(grp.LocalId, (uint)Changed.TELEPORT);
+ sp.Scene.EventManager.TriggerOnScriptChangedEvent(grp.LocalId, (uint)Changed.TELEPORT);
}
}
else // Another region possibly in another simulator
diff --git a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
index 3c1b3e09ba..9a763eed89 100644
--- a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
+++ b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
@@ -464,7 +464,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
mapitem.x = (uint)(xstart + x);
mapitem.y = (uint)(ystart + y);
// mapitem.z = (uint)m_scene.GetGroundHeight(x,y);
- mapitem.id = UUID.Zero;
+ mapitem.id = parcel.GlobalID;
mapitem.name = parcel.Name;
mapitem.Extra = parcel.Area;
mapitem.Extra2 = parcel.SalePrice;
@@ -1291,7 +1291,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
responsemapdata["X"] = OSD.FromInteger((int)(xstart + x));
responsemapdata["Y"] = OSD.FromInteger((int)(ystart + y));
// responsemapdata["Z"] = OSD.FromInteger((int)m_scene.GetGroundHeight(x,y));
- responsemapdata["ID"] = OSD.FromUUID(UUID.Zero);
+ responsemapdata["ID"] = OSD.FromUUID(parcel.GlobalID);
responsemapdata["Name"] = OSD.FromString(parcel.Name);
responsemapdata["Extra"] = OSD.FromInteger(parcel.Area);
responsemapdata["Extra2"] = OSD.FromInteger(parcel.SalePrice);
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 9c4bfb6480..01e5dbe0df 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -5882,7 +5882,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
foreach (GridRegion sri in neighbors)
{
- if (sri.RegionLocX == neighborX && sri.RegionLocY == neighborY)
+ if (sri.RegionCoordX == neighborX && sri.RegionCoordY == neighborY)
return 0;
}
diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini
index 9d9cc3ab3e..3b39f7fbe5 100644
--- a/bin/OpenSimDefaults.ini
+++ b/bin/OpenSimDefaults.ini
@@ -524,7 +524,7 @@
Cap_AttachmentResources = ""
Cap_AvatarPickerSearch = ""
Cap_ChatSessionRequest = ""
- Cap_CopyInventoryFromNotecard = ""
+ Cap_CopyInventoryFromNotecard = "localhost"
Cap_DispatchRegionInfo = ""
Cap_EstateChangeInfo = ""
Cap_EventQueueGet = "localhost"