aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs138
1 files changed, 68 insertions, 70 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs
index 582aac4..bcb7f42 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs
@@ -300,76 +300,74 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
300 } 300 }
301 } 301 }
302 302
303 // Disabled for now as it looks like http://opensimulator.org/mantis/view.php?id=6311 was fixed by fixes 303 // XXX: This code was placed here to try and accomodate RLV which moves given folders named #RLV/~<name>
304 // to inventory folder versioning allowing the viewer to move the received folder itself as happens on the 304 // to the requested folder, which in this case is #RLV. However, it is the viewer that appears to be
305 // LL grid. Doing it again server-side then wrongly does a second create and move 305 // response from renaming the #RLV/~example folder to ~example. For some reason this is not yet
306// // XXX: This code was placed here to try and accomdate RLV which moves given folders named #RLV/~<name> 306 // happening, possibly because we are not sending the correct inventory update messages with the correct
307// // to a folder called name in #RLV. However, this approach may not be ultimately correct - from analysis 307 // transaction IDs
308// // of Firestorm 4.2.2 on sending an InventoryOffered instead of TaskInventoryOffered (as was previously 308 else if (im.dialog == (byte) InstantMessageDialog.TaskInventoryAccepted)
309// // done), the viewer itself would appear to move and rename the folder, rather than the simulator doing it here. 309 {
310// else if (im.dialog == (byte) InstantMessageDialog.TaskInventoryAccepted) 310 UUID destinationFolderID = UUID.Zero;
311// { 311
312// UUID destinationFolderID = UUID.Zero; 312 if (im.binaryBucket != null && im.binaryBucket.Length >= 16)
313// 313 {
314// if (im.binaryBucket != null && im.binaryBucket.Length >= 16) 314 destinationFolderID = new UUID(im.binaryBucket, 0);
315// { 315 }
316// destinationFolderID = new UUID(im.binaryBucket, 0); 316
317// } 317 if (destinationFolderID != UUID.Zero)
318// 318 {
319// if (destinationFolderID != UUID.Zero) 319 InventoryFolderBase destinationFolder = new InventoryFolderBase(destinationFolderID, client.AgentId);
320// { 320 if (destinationFolder == null)
321// InventoryFolderBase destinationFolder = new InventoryFolderBase(destinationFolderID, client.AgentId); 321 {
322// if (destinationFolder == null) 322 m_log.WarnFormat(
323// { 323 "[INVENTORY TRANSFER]: TaskInventoryAccepted message from {0} in {1} specified folder {2} which does not exist",
324// m_log.WarnFormat( 324 client.Name, scene.Name, destinationFolderID);
325// "[INVENTORY TRANSFER]: TaskInventoryAccepted message from {0} in {1} specified folder {2} which does not exist", 325
326// client.Name, scene.Name, destinationFolderID); 326 return;
327// 327 }
328// return; 328
329// } 329 IInventoryService invService = scene.InventoryService;
330// 330
331// IInventoryService invService = scene.InventoryService; 331 UUID inventoryID = new UUID(im.imSessionID); // The inventory item/folder, back from it's trip
332// 332
333// UUID inventoryID = new UUID(im.imSessionID); // The inventory item/folder, back from it's trip 333 InventoryItemBase item = new InventoryItemBase(inventoryID, client.AgentId);
334// 334 item = invService.GetItem(item);
335// InventoryItemBase item = new InventoryItemBase(inventoryID, client.AgentId); 335 InventoryFolderBase folder = null;
336// item = invService.GetItem(item); 336 UUID? previousParentFolderID = null;
337// InventoryFolderBase folder = null; 337
338// UUID? previousParentFolderID = null; 338 if (item != null) // It's an item
339// 339 {
340// if (item != null) // It's an item 340 previousParentFolderID = item.Folder;
341// { 341 item.Folder = destinationFolderID;
342// previousParentFolderID = item.Folder; 342
343// item.Folder = destinationFolderID; 343 invService.DeleteItems(item.Owner, new List<UUID>() { item.ID });
344// 344 scene.AddInventoryItem(client, item);
345// invService.DeleteItems(item.Owner, new List<UUID>() { item.ID }); 345 }
346// scene.AddInventoryItem(client, item); 346 else
347// } 347 {
348// else 348 folder = new InventoryFolderBase(inventoryID, client.AgentId);
349// { 349 folder = invService.GetFolder(folder);
350// folder = new InventoryFolderBase(inventoryID, client.AgentId); 350
351// folder = invService.GetFolder(folder); 351 if (folder != null) // It's a folder
352// 352 {
353// if (folder != null) // It's a folder 353 previousParentFolderID = folder.ParentID;
354// { 354 folder.ParentID = destinationFolderID;
355// previousParentFolderID = folder.ParentID; 355 invService.MoveFolder(folder);
356// folder.ParentID = destinationFolderID; 356 }
357// invService.MoveFolder(folder); 357 }
358// } 358
359// } 359 // Tell client about updates to original parent and new parent (this should probably be factored with existing move item/folder code).
360// 360 if (previousParentFolderID != null)
361// // Tell client about updates to original parent and new parent (this should probably be factored with existing move item/folder code). 361 {
362// if (previousParentFolderID != null) 362 InventoryFolderBase previousParentFolder
363// { 363 = new InventoryFolderBase((UUID)previousParentFolderID, client.AgentId);
364// InventoryFolderBase previousParentFolder 364 previousParentFolder = invService.GetFolder(previousParentFolder);
365// = new InventoryFolderBase((UUID)previousParentFolderID, client.AgentId); 365 scene.SendInventoryUpdate(client, previousParentFolder, true, true);
366// previousParentFolder = invService.GetFolder(previousParentFolder); 366
367// scene.SendInventoryUpdate(client, previousParentFolder, true, true); 367 scene.SendInventoryUpdate(client, destinationFolder, true, true);
368// 368 }
369// scene.SendInventoryUpdate(client, destinationFolder, true, true); 369 }
370// } 370 }
371// }
372// }
373 else if ( 371 else if (
374 im.dialog == (byte)InstantMessageDialog.InventoryDeclined 372 im.dialog == (byte)InstantMessageDialog.InventoryDeclined
375 || im.dialog == (byte)InstantMessageDialog.TaskInventoryDeclined) 373 || im.dialog == (byte)InstantMessageDialog.TaskInventoryDeclined)