diff options
Diffstat (limited to 'OpenSim/Region/CoreModules/Avatar/Inventory')
3 files changed, 57 insertions, 13 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs index 6b24718..a19bbfd 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs | |||
@@ -632,4 +632,4 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
632 | m_assetsLoaded = true; | 632 | m_assetsLoaded = true; |
633 | } | 633 | } |
634 | } | 634 | } |
635 | } \ No newline at end of file | 635 | } |
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs index 36ecb3b..63fde07 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs | |||
@@ -178,9 +178,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
178 | InventoryFolderBase inventoryFolder, string path, bool saveThisFolderItself, | 178 | InventoryFolderBase inventoryFolder, string path, bool saveThisFolderItself, |
179 | Dictionary<string, object> options, IUserAccountService userAccountService) | 179 | Dictionary<string, object> options, IUserAccountService userAccountService) |
180 | { | 180 | { |
181 | if (options.ContainsKey("verbose")) | ||
182 | m_log.InfoFormat("[INVENTORY ARCHIVER]: Saving folder {0}", inventoryFolder.Name); | ||
183 | |||
184 | if (saveThisFolderItself) | 181 | if (saveThisFolderItself) |
185 | { | 182 | { |
186 | path += CreateArchiveFolderName(inventoryFolder); | 183 | path += CreateArchiveFolderName(inventoryFolder); |
@@ -449,4 +446,4 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
449 | return s; | 446 | return s; |
450 | } | 447 | } |
451 | } | 448 | } |
452 | } \ No newline at end of file | 449 | } |
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs index f46d9f7..120fd43 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs | |||
@@ -175,8 +175,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer | |||
175 | if (im.binaryBucket.Length < 17) // Invalid | 175 | if (im.binaryBucket.Length < 17) // Invalid |
176 | return; | 176 | return; |
177 | 177 | ||
178 | UUID receipientID = new UUID(im.toAgentID); | 178 | UUID recipientID = new UUID(im.toAgentID); |
179 | ScenePresence user = scene.GetScenePresence(receipientID); | 179 | ScenePresence user = scene.GetScenePresence(recipientID); |
180 | UUID copyID; | 180 | UUID copyID; |
181 | 181 | ||
182 | // First byte is the asset type | 182 | // First byte is the asset type |
@@ -191,7 +191,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer | |||
191 | folderID, new UUID(im.toAgentID)); | 191 | folderID, new UUID(im.toAgentID)); |
192 | 192 | ||
193 | InventoryFolderBase folderCopy | 193 | InventoryFolderBase folderCopy |
194 | = scene.GiveInventoryFolder(receipientID, client.AgentId, folderID, UUID.Zero); | 194 | = scene.GiveInventoryFolder(recipientID, client.AgentId, folderID, UUID.Zero); |
195 | 195 | ||
196 | if (folderCopy == null) | 196 | if (folderCopy == null) |
197 | { | 197 | { |
@@ -244,6 +244,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer | |||
244 | im.imSessionID = itemID.Guid; | 244 | im.imSessionID = itemID.Guid; |
245 | } | 245 | } |
246 | 246 | ||
247 | im.offline = 1; // Remember these | ||
248 | |||
247 | // Send the IM to the recipient. The item is already | 249 | // Send the IM to the recipient. The item is already |
248 | // in their inventory, so it will not be lost if | 250 | // in their inventory, so it will not be lost if |
249 | // they are offline. | 251 | // they are offline. |
@@ -427,22 +429,67 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer | |||
427 | /// | 429 | /// |
428 | /// </summary> | 430 | /// </summary> |
429 | /// <param name="msg"></param> | 431 | /// <param name="msg"></param> |
430 | private void OnGridInstantMessage(GridInstantMessage msg) | 432 | private void OnGridInstantMessage(GridInstantMessage im) |
431 | { | 433 | { |
432 | // Check if this is ours to handle | 434 | // Check if this is ours to handle |
433 | // | 435 | // |
434 | Scene scene = FindClientScene(new UUID(msg.toAgentID)); | 436 | Scene scene = FindClientScene(new UUID(im.toAgentID)); |
435 | 437 | ||
436 | if (scene == null) | 438 | if (scene == null) |
437 | return; | 439 | return; |
438 | 440 | ||
439 | // Find agent to deliver to | 441 | // Find agent to deliver to |
440 | // | 442 | // |
441 | ScenePresence user = scene.GetScenePresence(new UUID(msg.toAgentID)); | 443 | ScenePresence user = scene.GetScenePresence(new UUID(im.toAgentID)); |
444 | if (user == null) | ||
445 | return; | ||
446 | |||
447 | // This requires a little bit of processing because we have to make the | ||
448 | // new item visible in the recipient's inventory here | ||
449 | // | ||
450 | if (im.dialog == (byte) InstantMessageDialog.InventoryOffered) | ||
451 | { | ||
452 | if (im.binaryBucket.Length < 17) // Invalid | ||
453 | return; | ||
454 | |||
455 | UUID recipientID = new UUID(im.toAgentID); | ||
456 | |||
457 | // First byte is the asset type | ||
458 | AssetType assetType = (AssetType)im.binaryBucket[0]; | ||
459 | |||
460 | if (AssetType.Folder == assetType) | ||
461 | { | ||
462 | UUID folderID = new UUID(im.binaryBucket, 1); | ||
463 | |||
464 | InventoryFolderBase given = | ||
465 | new InventoryFolderBase(folderID, recipientID); | ||
466 | InventoryFolderBase folder = | ||
467 | scene.InventoryService.GetFolder(given); | ||
468 | |||
469 | if (folder != null) | ||
470 | user.ControllingClient.SendBulkUpdateInventory(folder); | ||
471 | } | ||
472 | else | ||
473 | { | ||
474 | UUID itemID = new UUID(im.binaryBucket, 1); | ||
442 | 475 | ||
443 | // Just forward to local handling | 476 | InventoryItemBase given = |
444 | OnInstantMessage(user.ControllingClient, msg); | 477 | new InventoryItemBase(itemID, recipientID); |
478 | InventoryItemBase item = | ||
479 | scene.InventoryService.GetItem(given); | ||
445 | 480 | ||
481 | if (item != null) | ||
482 | { | ||
483 | user.ControllingClient.SendBulkUpdateInventory(item); | ||
484 | } | ||
485 | } | ||
486 | user.ControllingClient.SendInstantMessage(im); | ||
487 | } | ||
488 | else if (im.dialog == (byte) InstantMessageDialog.InventoryAccepted || | ||
489 | im.dialog == (byte) InstantMessageDialog.InventoryDeclined) | ||
490 | { | ||
491 | user.ControllingClient.SendInstantMessage(im); | ||
492 | } | ||
446 | } | 493 | } |
447 | } | 494 | } |
448 | } | 495 | } |