diff options
Diffstat (limited to 'OpenSim/Region/CoreModules/World/Archiver')
-rw-r--r-- | OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs | 44 |
1 files changed, 22 insertions, 22 deletions
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs index 57b7672..a402f4f 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs | |||
@@ -243,29 +243,29 @@ namespace OpenSim.Region.CoreModules.World.Archiver | |||
243 | // to the same scene (when this is possible). | 243 | // to the same scene (when this is possible). |
244 | sceneObject.ResetIDs(); | 244 | sceneObject.ResetIDs(); |
245 | 245 | ||
246 | foreach (SceneObjectPart part in sceneObject.Children.Values) | 246 | lock (sceneObject.Children) |
247 | { | 247 | { |
248 | if (!ResolveUserUuid(part.CreatorID)) | 248 | foreach (SceneObjectPart part in sceneObject.Children.Values) |
249 | part.CreatorID = m_scene.RegionInfo.EstateSettings.EstateOwner; | ||
250 | |||
251 | if (!ResolveUserUuid(part.OwnerID)) | ||
252 | part.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner; | ||
253 | |||
254 | if (!ResolveUserUuid(part.LastOwnerID)) | ||
255 | part.LastOwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner; | ||
256 | |||
257 | // And zap any troublesome sit target information | ||
258 | part.SitTargetOrientation = new Quaternion(0, 0, 0, 1); | ||
259 | part.SitTargetPosition = new Vector3(0, 0, 0); | ||
260 | |||
261 | // Fix ownership/creator of inventory items | ||
262 | // Not doing so results in inventory items | ||
263 | // being no copy/no mod for everyone | ||
264 | part.TaskInventory.LockItemsForRead(true); | ||
265 | TaskInventoryDictionary inv = part.TaskInventory; | ||
266 | foreach (KeyValuePair<UUID, TaskInventoryItem> kvp in inv) | ||
267 | { | 249 | { |
268 | if (!ResolveUserUuid(kvp.Value.OwnerID)) | 250 | if (!ResolveUserUuid(part.CreatorID)) |
251 | part.CreatorID = m_scene.RegionInfo.EstateSettings.EstateOwner; | ||
252 | |||
253 | if (!ResolveUserUuid(part.OwnerID)) | ||
254 | part.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner; | ||
255 | |||
256 | if (!ResolveUserUuid(part.LastOwnerID)) | ||
257 | part.LastOwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner; | ||
258 | |||
259 | // And zap any troublesome sit target information | ||
260 | part.SitTargetOrientation = new Quaternion(0, 0, 0, 1); | ||
261 | part.SitTargetPosition = new Vector3(0, 0, 0); | ||
262 | |||
263 | // Fix ownership/creator of inventory items | ||
264 | // Not doing so results in inventory items | ||
265 | // being no copy/no mod for everyone | ||
266 | part.TaskInventory.LockItemsForRead(true); | ||
267 | TaskInventoryDictionary inv = part.TaskInventory; | ||
268 | foreach (KeyValuePair<UUID, TaskInventoryItem> kvp in inv) | ||
269 | { | 269 | { |
270 | if (!ResolveUserUuid(kvp.Value.OwnerID)) | 270 | if (!ResolveUserUuid(kvp.Value.OwnerID)) |
271 | { | 271 | { |
@@ -276,8 +276,8 @@ namespace OpenSim.Region.CoreModules.World.Archiver | |||
276 | kvp.Value.CreatorID = m_scene.RegionInfo.EstateSettings.EstateOwner; | 276 | kvp.Value.CreatorID = m_scene.RegionInfo.EstateSettings.EstateOwner; |
277 | } | 277 | } |
278 | } | 278 | } |
279 | part.TaskInventory.LockItemsForRead(false); | ||
279 | } | 280 | } |
280 | part.TaskInventory.LockItemsForRead(false); | ||
281 | } | 281 | } |
282 | 282 | ||
283 | if (m_scene.AddRestoredSceneObject(sceneObject, true, false)) | 283 | if (m_scene.AddRestoredSceneObject(sceneObject, true, false)) |