diff options
Merge branch 'master' into careminster-presence-refactor
Diffstat (limited to 'OpenSim/Region')
7 files changed, 58 insertions, 23 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs index c6f8b88..ca0b7ad 100644 --- a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs | |||
@@ -769,8 +769,15 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
769 | bool canEditObjectsChanged = ((rights ^ userFlags) & (int)FriendRights.CanModifyObjects) != 0; | 769 | bool canEditObjectsChanged = ((rights ^ userFlags) & (int)FriendRights.CanModifyObjects) != 0; |
770 | if (canEditObjectsChanged) | 770 | if (canEditObjectsChanged) |
771 | friendClient.SendChangeUserRights(userID, friendID, rights); | 771 | friendClient.SendChangeUserRights(userID, friendID, rights); |
772 | |||
772 | } | 773 | } |
773 | 774 | ||
775 | // update local cache | ||
776 | //m_Friends[friendID].Friends = m_FriendsService.GetFriends(friendID); | ||
777 | foreach (FriendInfo finfo in m_Friends[friendID].Friends) | ||
778 | if (finfo.Friend == userID.ToString()) | ||
779 | finfo.TheirFlags = rights; | ||
780 | |||
774 | return true; | 781 | return true; |
775 | } | 782 | } |
776 | 783 | ||
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs index 2ab46aa..b0555da 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs | |||
@@ -131,6 +131,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
131 | return ret; | 131 | return ret; |
132 | } | 132 | } |
133 | 133 | ||
134 | // DO NOT OVERRIDE THIS METHOD | ||
134 | public virtual UUID DeleteToInventory(DeRezAction action, UUID folderID, | 135 | public virtual UUID DeleteToInventory(DeRezAction action, UUID folderID, |
135 | SceneObjectGroup objectGroup, IClientAPI remoteClient) | 136 | SceneObjectGroup objectGroup, IClientAPI remoteClient) |
136 | { | 137 | { |
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 3035d88..12b6aa0 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs | |||
@@ -286,23 +286,15 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
286 | { | 286 | { |
287 | // Deleting someone else's item | 287 | // Deleting someone else's item |
288 | // | 288 | // |
289 | |||
290 | |||
291 | if (remoteClient == null || | 289 | if (remoteClient == null || |
292 | objectGroup.OwnerID != remoteClient.AgentId) | 290 | objectGroup.OwnerID != remoteClient.AgentId) |
293 | { | 291 | { |
294 | // Folder skeleton may not be loaded and we | 292 | |
295 | // have to wait for the inventory to find | ||
296 | // the destination folder | ||
297 | // | ||
298 | folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.LostAndFoundFolder); | 293 | folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.LostAndFoundFolder); |
299 | } | 294 | } |
300 | else | 295 | else |
301 | { | 296 | { |
302 | // Assume inventory skeleton was loaded during login | 297 | folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.TrashFolder); |
303 | // and all folders can be found | ||
304 | // | ||
305 | folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.TrashFolder); | ||
306 | } | 298 | } |
307 | } | 299 | } |
308 | else if (action == DeRezAction.Return) | 300 | else if (action == DeRezAction.Return) |
@@ -332,7 +324,6 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
332 | 324 | ||
333 | if (folder == null) // None of the above | 325 | if (folder == null) // None of the above |
334 | { | 326 | { |
335 | //folder = userInfo.RootFolder.FindFolder(folderID); | ||
336 | folder = new InventoryFolderBase(folderID); | 327 | folder = new InventoryFolderBase(folderID); |
337 | 328 | ||
338 | if (folder == null) // Nowhere to put it | 329 | if (folder == null) // Nowhere to put it |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Inventory/InventoryServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Inventory/InventoryServiceInConnectorModule.cs index ae03cdf..209cf0d 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Inventory/InventoryServiceInConnectorModule.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Inventory/InventoryServiceInConnectorModule.cs | |||
@@ -96,7 +96,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsIn.Inventory | |||
96 | 96 | ||
97 | Object[] args = new Object[] { m_Config, MainServer.Instance, "HGInventoryService" }; | 97 | Object[] args = new Object[] { m_Config, MainServer.Instance, "HGInventoryService" }; |
98 | 98 | ||
99 | ServerUtils.LoadPlugin<IServiceConnector>("OpenSim.Server.Handlers.dll:HGInventoryServiceInConnector", args); | 99 | ServerUtils.LoadPlugin<IServiceConnector>("OpenSim.Server.Handlers.dll:XInventoryInConnector", args); |
100 | } | 100 | } |
101 | } | 101 | } |
102 | 102 | ||
diff --git a/OpenSim/Region/CoreModules/World/Archiver/AssetsRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/AssetsRequest.cs index 4d360f6..a1451ce 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/AssetsRequest.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/AssetsRequest.cs | |||
@@ -134,8 +134,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver | |||
134 | 134 | ||
135 | foreach (KeyValuePair<UUID, AssetType> kvp in m_uuids) | 135 | foreach (KeyValuePair<UUID, AssetType> kvp in m_uuids) |
136 | { | 136 | { |
137 | if (kvp.Key != UUID.Zero) | 137 | m_assetService.Get(kvp.Key.ToString(), kvp.Value, PreAssetRequestCallback); |
138 | m_assetService.Get(kvp.Key.ToString(), kvp.Value, PreAssetRequestCallback); | ||
139 | } | 138 | } |
140 | 139 | ||
141 | m_requestCallbackTimer.Enabled = true; | 140 | m_requestCallbackTimer.Enabled = true; |
@@ -270,7 +269,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver | |||
270 | } | 269 | } |
271 | catch (Exception e) | 270 | catch (Exception e) |
272 | { | 271 | { |
273 | m_log.ErrorFormat("[ARCHIVER]: AssetRequestCallback failed with {0}{1}", e.Message, e.StackTrace); | 272 | m_log.ErrorFormat("[ARCHIVER]: AssetRequestCallback failed with {0}", e); |
274 | } | 273 | } |
275 | } | 274 | } |
276 | 275 | ||
@@ -286,8 +285,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver | |||
286 | catch (Exception e) | 285 | catch (Exception e) |
287 | { | 286 | { |
288 | m_log.ErrorFormat( | 287 | m_log.ErrorFormat( |
289 | "[ARCHIVER]: Terminating archive creation since asset requester callback failed with {0}{1}", | 288 | "[ARCHIVER]: Terminating archive creation since asset requster callback failed with {0}", e); |
290 | e.Message, e.StackTrace); | ||
291 | } | 289 | } |
292 | } | 290 | } |
293 | } | 291 | } |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index e61132e..0ac427f 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | |||
@@ -1592,7 +1592,17 @@ namespace OpenSim.Region.Framework.Scenes | |||
1592 | // So that we know the database is upto date, | 1592 | // So that we know the database is upto date, |
1593 | // for when deleting the object from it | 1593 | // for when deleting the object from it |
1594 | ForceSceneObjectBackup(grp); | 1594 | ForceSceneObjectBackup(grp); |
1595 | if (remoteClient != null) | 1595 | |
1596 | if (remoteClient == null) | ||
1597 | { | ||
1598 | // Autoreturn has a null client. Nothing else does. So | ||
1599 | // allow only returns | ||
1600 | if (action != DeRezAction.Return) | ||
1601 | return; | ||
1602 | |||
1603 | permissionToTakeCopy = false; | ||
1604 | } | ||
1605 | else | ||
1596 | { | 1606 | { |
1597 | if (!Permissions.CanTakeCopyObject(grp.UUID, remoteClient.AgentId)) | 1607 | if (!Permissions.CanTakeCopyObject(grp.UUID, remoteClient.AgentId)) |
1598 | permissionToTakeCopy = false; | 1608 | permissionToTakeCopy = false; |
@@ -1601,7 +1611,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
1601 | 1611 | ||
1602 | if (!Permissions.CanDeleteObject(grp.UUID, remoteClient.AgentId)) | 1612 | if (!Permissions.CanDeleteObject(grp.UUID, remoteClient.AgentId)) |
1603 | permissionToDelete = false; | 1613 | permissionToDelete = false; |
1604 | |||
1605 | } | 1614 | } |
1606 | } | 1615 | } |
1607 | 1616 | ||
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs index 30e127d..bbaf923 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | |||
@@ -556,6 +556,11 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
556 | 556 | ||
557 | if (stateSource == (int)StateSource.ScriptedRez) | 557 | if (stateSource == (int)StateSource.ScriptedRez) |
558 | { | 558 | { |
559 | lock (m_CompileDict) | ||
560 | { | ||
561 | m_CompileDict[itemID] = 0; | ||
562 | } | ||
563 | |||
559 | DoOnRezScript(parms); | 564 | DoOnRezScript(parms); |
560 | } | 565 | } |
561 | else | 566 | else |
@@ -1356,9 +1361,23 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
1356 | string xml = instance.GetXMLState(); | 1361 | string xml = instance.GetXMLState(); |
1357 | 1362 | ||
1358 | XmlDocument sdoc = new XmlDocument(); | 1363 | XmlDocument sdoc = new XmlDocument(); |
1359 | sdoc.LoadXml(xml); | 1364 | bool loadedState = true; |
1360 | XmlNodeList rootL = sdoc.GetElementsByTagName("ScriptState"); | 1365 | try |
1361 | XmlNode rootNode = rootL[0]; | 1366 | { |
1367 | sdoc.LoadXml(xml); | ||
1368 | } | ||
1369 | catch (System.Xml.XmlException e) | ||
1370 | { | ||
1371 | loadedState = false; | ||
1372 | } | ||
1373 | |||
1374 | XmlNodeList rootL = null; | ||
1375 | XmlNode rootNode = null; | ||
1376 | if (loadedState) | ||
1377 | { | ||
1378 | rootL = sdoc.GetElementsByTagName("ScriptState"); | ||
1379 | rootNode = rootL[0]; | ||
1380 | } | ||
1362 | 1381 | ||
1363 | // Create <State UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"> | 1382 | // Create <State UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"> |
1364 | XmlDocument doc = new XmlDocument(); | 1383 | XmlDocument doc = new XmlDocument(); |
@@ -1374,8 +1393,18 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
1374 | stateData.Attributes.Append(engineName); | 1393 | stateData.Attributes.Append(engineName); |
1375 | doc.AppendChild(stateData); | 1394 | doc.AppendChild(stateData); |
1376 | 1395 | ||
1396 | XmlNode xmlstate = null; | ||
1397 | |||
1377 | // Add <ScriptState>...</ScriptState> | 1398 | // Add <ScriptState>...</ScriptState> |
1378 | XmlNode xmlstate = doc.ImportNode(rootNode, true); | 1399 | if (loadedState) |
1400 | { | ||
1401 | xmlstate = doc.ImportNode(rootNode, true); | ||
1402 | } | ||
1403 | else | ||
1404 | { | ||
1405 | xmlstate = doc.CreateElement("", "ScriptState", ""); | ||
1406 | } | ||
1407 | |||
1379 | stateData.AppendChild(xmlstate); | 1408 | stateData.AppendChild(xmlstate); |
1380 | 1409 | ||
1381 | string assemName = instance.GetAssemblyName(); | 1410 | string assemName = instance.GetAssemblyName(); |