aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs8
-rw-r--r--OpenSim/Framework/Communications/Cache/CachedUserInfo.cs4
-rw-r--r--OpenSim/Framework/Communications/Tests/LoginServiceTests.cs2
-rw-r--r--OpenSim/Framework/IClientAPI.cs2
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs25
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs4
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/BaseInventoryConnector.cs2
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs18
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs4
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs10
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.Inventory.cs31
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs2
-rw-r--r--OpenSim/Server/Handlers/Inventory/InventoryServerInConnector.cs13
-rw-r--r--OpenSim/Services/Connectors/Inventory/HGInventoryServiceConnector.cs4
-rw-r--r--OpenSim/Services/Connectors/Inventory/ISessionAuthInventoryService.cs2
-rw-r--r--OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs9
-rw-r--r--OpenSim/Services/Connectors/Inventory/QuickAndDirtyInventoryServiceConnector.cs2
-rw-r--r--OpenSim/Services/Interfaces/IInventoryService.cs3
-rw-r--r--OpenSim/Services/InventoryService/InventoryService.cs12
-rw-r--r--OpenSim/Tests/Common/Mock/TestInventoryService.cs2
20 files changed, 106 insertions, 53 deletions
diff --git a/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs b/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs
index aec06be..59431bb 100644
--- a/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs
+++ b/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs
@@ -851,7 +851,9 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
851 851
852 // Delete the old item 852 // Delete the old item
853 853
854 Rest.InventoryServices.DeleteItem(uri); 854 List<UUID> uuids = new List<UUID>();
855 uuids.Add(uri.ID);
856 Rest.InventoryServices.DeleteItems(uri.Owner, uuids);
855 857
856 // Add the new item to the inventory 858 // Add the new item to the inventory
857 859
@@ -927,7 +929,9 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
927 InventoryItemBase item = (InventoryItemBase) InventoryNode; 929 InventoryItemBase item = (InventoryItemBase) InventoryNode;
928 Rest.Log.DebugFormat("{0} {1}: Item {2} will be deleted", 930 Rest.Log.DebugFormat("{0} {1}: Item {2} will be deleted",
929 MsgId, rdata.method, rdata.path); 931 MsgId, rdata.method, rdata.path);
930 Rest.InventoryServices.DeleteItem(item); 932 List<UUID> uuids = new List<UUID>();
933 uuids.Add(item.ID);
934 Rest.InventoryServices.DeleteItems(item.Owner, uuids);
931 rdata.appendStatus(String.Format("<p>Deleted item {0} UUID {1} <p>", item.Name, item.ID)); 935 rdata.appendStatus(String.Format("<p>Deleted item {0} UUID {1} <p>", item.Name, item.ID));
932 } 936 }
933 937
diff --git a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs
index ca641d0..238810a 100644
--- a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs
+++ b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs
@@ -653,7 +653,9 @@ namespace OpenSim.Framework.Communications.Cache
653 653
654 if (RootFolder.DeleteItem(item.ID)) 654 if (RootFolder.DeleteItem(item.ID))
655 { 655 {
656 return m_InventoryService.DeleteItem(item); 656 List<UUID> uuids = new List<UUID>();
657 uuids.Add(itemID);
658 return m_InventoryService.DeleteItems(this.UserProfile.ID, uuids);
657 } 659 }
658 } 660 }
659 else 661 else
diff --git a/OpenSim/Framework/Communications/Tests/LoginServiceTests.cs b/OpenSim/Framework/Communications/Tests/LoginServiceTests.cs
index 22dcef9..d5d4d1e 100644
--- a/OpenSim/Framework/Communications/Tests/LoginServiceTests.cs
+++ b/OpenSim/Framework/Communications/Tests/LoginServiceTests.cs
@@ -547,7 +547,7 @@ namespace OpenSim.Framework.Communications.Tests
547 return false; 547 return false;
548 } 548 }
549 549
550 public bool DeleteItem(InventoryItemBase item) 550 public bool DeleteItems(UUID owner, List<UUID> items)
551 { 551 {
552 return false; 552 return false;
553 } 553 }
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs
index e451dd8..ca37a5b 100644
--- a/OpenSim/Framework/IClientAPI.cs
+++ b/OpenSim/Framework/IClientAPI.cs
@@ -257,7 +257,7 @@ namespace OpenSim.Framework
257 IClientAPI remoteClient, UUID folderID, UUID itemID, int length, string newName); 257 IClientAPI remoteClient, UUID folderID, UUID itemID, int length, string newName);
258 258
259 public delegate void RemoveInventoryItem( 259 public delegate void RemoveInventoryItem(
260 IClientAPI remoteClient, UUID itemID); 260 IClientAPI remoteClient, List<UUID> itemIDs);
261 261
262 public delegate void RemoveInventoryFolder( 262 public delegate void RemoveInventoryFolder(
263 IClientAPI remoteClient, UUID folderID); 263 IClientAPI remoteClient, UUID folderID);
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 16ce9e0..e2fb659 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -7053,14 +7053,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP
7053 if (OnRemoveInventoryItem != null) 7053 if (OnRemoveInventoryItem != null)
7054 { 7054 {
7055 handlerRemoveInventoryItem = null; 7055 handlerRemoveInventoryItem = null;
7056 List<UUID> uuids = new List<UUID>();
7056 foreach (RemoveInventoryItemPacket.InventoryDataBlock datablock in removeItem.InventoryData) 7057 foreach (RemoveInventoryItemPacket.InventoryDataBlock datablock in removeItem.InventoryData)
7057 { 7058 {
7058 handlerRemoveInventoryItem = OnRemoveInventoryItem; 7059 uuids.Add(datablock.ItemID);
7059 if (handlerRemoveInventoryItem != null)
7060 {
7061 handlerRemoveInventoryItem(this, datablock.ItemID);
7062 }
7063 } 7060 }
7061 handlerRemoveInventoryItem = OnRemoveInventoryItem;
7062 if (handlerRemoveInventoryItem != null)
7063 {
7064 handlerRemoveInventoryItem(this, uuids);
7065 }
7066
7064 } 7067 }
7065 break; 7068 break;
7066 case PacketType.RemoveInventoryFolder: 7069 case PacketType.RemoveInventoryFolder:
@@ -7116,13 +7119,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP
7116 if (OnRemoveInventoryItem != null) 7119 if (OnRemoveInventoryItem != null)
7117 { 7120 {
7118 handlerRemoveInventoryItem = null; 7121 handlerRemoveInventoryItem = null;
7122 List<UUID> uuids = new List<UUID>();
7119 foreach (RemoveInventoryObjectsPacket.ItemDataBlock datablock in removeObject.ItemData) 7123 foreach (RemoveInventoryObjectsPacket.ItemDataBlock datablock in removeObject.ItemData)
7120 { 7124 {
7121 handlerRemoveInventoryItem = OnRemoveInventoryItem; 7125 uuids.Add(datablock.ItemID);
7122 if (handlerRemoveInventoryItem != null) 7126 }
7123 { 7127 handlerRemoveInventoryItem = OnRemoveInventoryItem;
7124 handlerRemoveInventoryItem(this, datablock.ItemID); 7128 if (handlerRemoveInventoryItem != null)
7125 } 7129 {
7130 handlerRemoveInventoryItem(this, uuids);
7126 } 7131 }
7127 } 7132 }
7128 break; 7133 break;
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs
index 3a65336..5afbf68 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs
@@ -267,7 +267,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
267 item.Folder = trashFolder.ID; 267 item.Folder = trashFolder.ID;
268 268
269 // Diva comment: can't we just update this item??? 269 // Diva comment: can't we just update this item???
270 invService.DeleteItem(item); 270 List<UUID> uuids = new List<UUID>();
271 uuids.Add(item.ID);
272 invService.DeleteItems(item.Owner, uuids);
271 scene.AddInventoryItem(client, item); 273 scene.AddInventoryItem(client, item);
272 } 274 }
273 else 275 else
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/BaseInventoryConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/BaseInventoryConnector.cs
index ef5ffe1..d1ae3e4 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/BaseInventoryConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/BaseInventoryConnector.cs
@@ -186,7 +186,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
186 /// </summary> 186 /// </summary>
187 /// <param name="item"></param> 187 /// <param name="item"></param>
188 /// <returns>true if the item was successfully deleted</returns> 188 /// <returns>true if the item was successfully deleted</returns>
189 public abstract bool DeleteItem(InventoryItemBase item); 189 public abstract bool DeleteItems(UUID ownerID, List<UUID> itemIDs);
190 190
191 public abstract InventoryItemBase GetItem(InventoryItemBase item); 191 public abstract InventoryItemBase GetItem(InventoryItemBase item);
192 192
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs
index 3649097..6a1f2d5 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs
@@ -393,18 +393,22 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
393 } 393 }
394 } 394 }
395 395
396 public override bool DeleteItem(InventoryItemBase item) 396 public override bool DeleteItems(UUID ownerID, List<UUID> itemIDs)
397 { 397 {
398 if (item == null) 398 m_log.DebugFormat("[HG INVENTORY CONNECTOR]: Delete {0} items for user {1}", itemIDs.Count, ownerID);
399
400 if (itemIDs == null)
399 return false; 401 return false;
402 if (itemIDs.Count == 0)
403 return true;
400 404
401 if (IsLocalGridUser(item.Owner)) 405 if (IsLocalGridUser(ownerID))
402 return m_GridService.DeleteItem(item); 406 return m_GridService.DeleteItems(ownerID, itemIDs);
403 else 407 else
404 { 408 {
405 UUID sessionID = GetSessionID(item.Owner); 409 UUID sessionID = GetSessionID(ownerID);
406 string uri = GetUserInventoryURI(item.Owner) + "/" + item.Owner.ToString(); 410 string uri = GetUserInventoryURI(ownerID) + "/" + ownerID.ToString();
407 return m_HGService.DeleteItem(uri, item, sessionID); 411 return m_HGService.DeleteItems(uri, itemIDs, sessionID);
408 } 412 }
409 } 413 }
410 414
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs
index 2fbc5fe..b2640af 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs
@@ -294,9 +294,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
294 /// </summary> 294 /// </summary>
295 /// <param name="item"></param> 295 /// <param name="item"></param>
296 /// <returns>true if the item was successfully deleted</returns> 296 /// <returns>true if the item was successfully deleted</returns>
297 public override bool DeleteItem(InventoryItemBase item) 297 public override bool DeleteItems(UUID ownerID, List<UUID> itemIDs)
298 { 298 {
299 return m_InventoryService.DeleteItem(item); 299 return m_InventoryService.DeleteItems(ownerID, itemIDs);
300 } 300 }
301 301
302 public override InventoryItemBase GetItem(InventoryItemBase item) 302 public override InventoryItemBase GetItem(InventoryItemBase item)
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs
index 522f680..012f0e3 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs
@@ -273,13 +273,15 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
273 return m_RemoteConnector.UpdateItem(item.Owner.ToString(), item, sessionID); 273 return m_RemoteConnector.UpdateItem(item.Owner.ToString(), item, sessionID);
274 } 274 }
275 275
276 public override bool DeleteItem(InventoryItemBase item) 276 public override bool DeleteItems(UUID ownerID, List<UUID> itemIDs)
277 { 277 {
278 if (item == null) 278 if (itemIDs == null)
279 return false; 279 return false;
280 if (itemIDs.Count == 0)
281 return true;
280 282
281 UUID sessionID = GetSessionID(item.Owner); 283 UUID sessionID = GetSessionID(ownerID);
282 return m_RemoteConnector.DeleteItem(item.Owner.ToString(), item, sessionID); 284 return m_RemoteConnector.DeleteItems(ownerID.ToString(), itemIDs, sessionID);
283 } 285 }
284 286
285 public override InventoryItemBase GetItem(InventoryItemBase item) 287 public override InventoryItemBase GetItem(InventoryItemBase item)
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 48c7f4e..5e2eb73 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -477,7 +477,11 @@ namespace OpenSim.Region.Framework.Scenes
477 if (!Permissions.BypassPermissions()) 477 if (!Permissions.BypassPermissions())
478 { 478 {
479 if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0) 479 if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0)
480 InventoryService.DeleteItem(new InventoryItemBase(itemId)); 480 {
481 List<UUID> items = new List<UUID>();
482 items.Add(itemId);
483 InventoryService.DeleteItems(senderId, items);
484 }
481 } 485 }
482 486
483 return itemCopy; 487 return itemCopy;
@@ -652,7 +656,9 @@ namespace OpenSim.Region.Framework.Scenes
652 item.Folder = folderID; 656 item.Folder = folderID;
653 657
654 // Diva comment: can't we just update? 658 // Diva comment: can't we just update?
655 InventoryService.DeleteItem(item); 659 List<UUID> uuids = new List<UUID>();
660 uuids.Add(item.ID);
661 InventoryService.DeleteItems(item.Owner, uuids);
656 662
657 AddInventoryItem(remoteClient, item); 663 AddInventoryItem(remoteClient, item);
658 } 664 }
@@ -799,9 +805,10 @@ namespace OpenSim.Region.Framework.Scenes
799 /// </summary> 805 /// </summary>
800 /// <param name="remoteClient"></param> 806 /// <param name="remoteClient"></param>
801 /// <param name="itemID"></param> 807 /// <param name="itemID"></param>
802 private void RemoveInventoryItem(IClientAPI remoteClient, UUID itemID) 808 private void RemoveInventoryItem(IClientAPI remoteClient, List<UUID> itemIDs)
803 { 809 {
804 InventoryService.DeleteItem(new InventoryItemBase(itemID)); 810 //m_log.Debug("[SCENE INVENTORY]: user " + remoteClient.AgentId);
811 InventoryService.DeleteItems(remoteClient.AgentId, itemIDs);
805 } 812 }
806 813
807 /// <summary> 814 /// <summary>
@@ -1248,7 +1255,11 @@ namespace OpenSim.Region.Framework.Scenes
1248 if (!Permissions.BypassPermissions()) 1255 if (!Permissions.BypassPermissions())
1249 { 1256 {
1250 if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0) 1257 if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0)
1251 RemoveInventoryItem(remoteClient, itemID); 1258 {
1259 List<UUID> uuids = new List<UUID>();
1260 uuids.Add(itemID);
1261 RemoveInventoryItem(remoteClient, uuids);
1262 }
1252 } 1263 }
1253 } 1264 }
1254 else 1265 else
@@ -2144,7 +2155,11 @@ namespace OpenSim.Region.Framework.Scenes
2144 // copy ones will be lost, so avoid it 2155 // copy ones will be lost, so avoid it
2145 // 2156 //
2146 if (!attachment) 2157 if (!attachment)
2147 InventoryService.DeleteItem(item); 2158 {
2159 List<UUID> uuids = new List<UUID>();
2160 uuids.Add(item.ID);
2161 InventoryService.DeleteItems(item.Owner, uuids);
2162 }
2148 } 2163 }
2149 } 2164 }
2150 2165
@@ -2404,7 +2419,9 @@ namespace OpenSim.Region.Framework.Scenes
2404 } 2419 }
2405 part.ParentGroup.DetachToGround(); 2420 part.ParentGroup.DetachToGround();
2406 2421
2407 InventoryService.DeleteItem(new InventoryItemBase(inventoryID)); 2422 List<UUID> uuids = new List<UUID>();
2423 uuids.Add(inventoryID);
2424 InventoryService.DeleteItems(remoteClient.AgentId, uuids);
2408 remoteClient.SendRemoveInventoryItem(inventoryID); 2425 remoteClient.SendRemoveInventoryItem(inventoryID);
2409 } 2426 }
2410 SendAttachEvent(part.ParentGroup.LocalId, itemID, UUID.Zero); 2427 SendAttachEvent(part.ParentGroup.LocalId, itemID, UUID.Zero);
diff --git a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
index 1bbca49..a2414e5 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
@@ -560,7 +560,7 @@ namespace OpenSim.Region.Framework.Scenes
560 560
561 public void HandlePurgeInventoryDescendents(IClientAPI remoteClient, UUID folderID) 561 public void HandlePurgeInventoryDescendents(IClientAPI remoteClient, UUID folderID)
562 { 562 {
563 InventoryFolderBase folder = new InventoryFolderBase(folderID); 563 InventoryFolderBase folder = new InventoryFolderBase(folderID, remoteClient.AgentId);
564 564
565 if (InventoryService.PurgeFolder(folder)) 565 if (InventoryService.PurgeFolder(folder))
566 m_log.DebugFormat("[AGENT INVENTORY]: folder {0} purged successfully", folderID); 566 m_log.DebugFormat("[AGENT INVENTORY]: folder {0} purged successfully", folderID);
diff --git a/OpenSim/Server/Handlers/Inventory/InventoryServerInConnector.cs b/OpenSim/Server/Handlers/Inventory/InventoryServerInConnector.cs
index 30b3cae..6cfc7df 100644
--- a/OpenSim/Server/Handlers/Inventory/InventoryServerInConnector.cs
+++ b/OpenSim/Server/Handlers/Inventory/InventoryServerInConnector.cs
@@ -105,8 +105,8 @@ namespace OpenSim.Server.Handlers.Inventory
105 "POST", "/PurgeFolder/", m_InventoryService.PurgeFolder, CheckAuthSession)); 105 "POST", "/PurgeFolder/", m_InventoryService.PurgeFolder, CheckAuthSession));
106 106
107 m_httpServer.AddStreamHandler( 107 m_httpServer.AddStreamHandler(
108 new RestDeserialiseSecureHandler<InventoryItemBase, bool>( 108 new RestDeserialiseSecureHandler<List<Guid>, bool>(
109 "POST", "/DeleteItem/", m_InventoryService.DeleteItem, CheckAuthSession)); 109 "POST", "/DeleteItem/", DeleteItems, CheckAuthSession));
110 110
111 m_httpServer.AddStreamHandler( 111 m_httpServer.AddStreamHandler(
112 new RestDeserialiseSecureHandler<InventoryItemBase, InventoryItemBase>( 112 new RestDeserialiseSecureHandler<InventoryItemBase, InventoryItemBase>(
@@ -247,6 +247,15 @@ namespace OpenSim.Server.Handlers.Inventory
247 return m_InventoryService.GetAssetPermissions(item.Owner, item.AssetID); 247 return m_InventoryService.GetAssetPermissions(item.Owner, item.AssetID);
248 } 248 }
249 249
250 public bool DeleteItems(List<Guid> items)
251 {
252 List<UUID> uuids = new List<UUID>();
253 foreach (Guid g in items)
254 uuids.Add(new UUID(g));
255 // oops we lost the user info here. Bad bad handlers
256 return m_InventoryService.DeleteItems(UUID.Zero, uuids);
257 }
258
250 #endregion 259 #endregion
251 260
252 /// <summary> 261 /// <summary>
diff --git a/OpenSim/Services/Connectors/Inventory/HGInventoryServiceConnector.cs b/OpenSim/Services/Connectors/Inventory/HGInventoryServiceConnector.cs
index 75fa516..00b74b5 100644
--- a/OpenSim/Services/Connectors/Inventory/HGInventoryServiceConnector.cs
+++ b/OpenSim/Services/Connectors/Inventory/HGInventoryServiceConnector.cs
@@ -253,7 +253,7 @@ namespace OpenSim.Services.Connectors.Inventory
253 return false; 253 return false;
254 } 254 }
255 255
256 public bool DeleteItem(string id, InventoryItemBase item, UUID sessionID) 256 public bool DeleteItems(string id, List<UUID> itemIDs, UUID sessionID)
257 { 257 {
258 string url = string.Empty; 258 string url = string.Empty;
259 string userID = string.Empty; 259 string userID = string.Empty;
@@ -261,7 +261,7 @@ namespace OpenSim.Services.Connectors.Inventory
261 if (StringToUrlAndUserID(id, out url, out userID)) 261 if (StringToUrlAndUserID(id, out url, out userID))
262 { 262 {
263 ISessionAuthInventoryService connector = GetConnector(url); 263 ISessionAuthInventoryService connector = GetConnector(url);
264 return connector.UpdateItem(userID, item, sessionID); 264 return connector.DeleteItems(userID, itemIDs, sessionID);
265 } 265 }
266 return false; 266 return false;
267 } 267 }
diff --git a/OpenSim/Services/Connectors/Inventory/ISessionAuthInventoryService.cs b/OpenSim/Services/Connectors/Inventory/ISessionAuthInventoryService.cs
index 7f051f3..e4e713c 100644
--- a/OpenSim/Services/Connectors/Inventory/ISessionAuthInventoryService.cs
+++ b/OpenSim/Services/Connectors/Inventory/ISessionAuthInventoryService.cs
@@ -121,7 +121,7 @@ namespace OpenSim.Services.Connectors
121 /// </summary> 121 /// </summary>
122 /// <param name="item"></param> 122 /// <param name="item"></param>
123 /// <returns>true if the item was successfully deleted</returns> 123 /// <returns>true if the item was successfully deleted</returns>
124 bool DeleteItem(string userID, InventoryItemBase item, UUID session_id); 124 bool DeleteItems(string userID, List<UUID> itemIDs, UUID session_id);
125 125
126 InventoryItemBase QueryItem(string userID, InventoryItemBase item, UUID session_id); 126 InventoryItemBase QueryItem(string userID, InventoryItemBase item, UUID session_id);
127 127
diff --git a/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs b/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs
index 5aa4b30..9b2e331 100644
--- a/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs
+++ b/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs
@@ -383,12 +383,15 @@ namespace OpenSim.Services.Connectors
383 return false; 383 return false;
384 } 384 }
385 385
386 public bool DeleteItem(string userID, InventoryItemBase item, UUID sessionID) 386 public bool DeleteItems(string userID, List<UUID> items, UUID sessionID)
387 { 387 {
388 try 388 try
389 { 389 {
390 return SynchronousRestSessionObjectPoster<InventoryItemBase, bool>.BeginPostObject( 390 List<Guid> guids = new List<Guid>();
391 "POST", m_ServerURI + "/DeleteItem/", item, sessionID.ToString(), item.Owner.ToString()); 391 foreach (UUID u in items)
392 guids.Add(u.Guid);
393 return SynchronousRestSessionObjectPoster<List<Guid>, bool>.BeginPostObject(
394 "POST", m_ServerURI + "/DeleteItem/", guids, sessionID.ToString(), userID);
392 } 395 }
393 catch (Exception e) 396 catch (Exception e)
394 { 397 {
diff --git a/OpenSim/Services/Connectors/Inventory/QuickAndDirtyInventoryServiceConnector.cs b/OpenSim/Services/Connectors/Inventory/QuickAndDirtyInventoryServiceConnector.cs
index 5cbd307..3bbf129 100644
--- a/OpenSim/Services/Connectors/Inventory/QuickAndDirtyInventoryServiceConnector.cs
+++ b/OpenSim/Services/Connectors/Inventory/QuickAndDirtyInventoryServiceConnector.cs
@@ -151,7 +151,7 @@ namespace OpenSim.Services.Connectors
151 return false; 151 return false;
152 } 152 }
153 153
154 public bool DeleteItem(InventoryItemBase item) 154 public bool DeleteItems(UUID owner, List<UUID> itemIDs)
155 { 155 {
156 return false; 156 return false;
157 } 157 }
diff --git a/OpenSim/Services/Interfaces/IInventoryService.cs b/OpenSim/Services/Interfaces/IInventoryService.cs
index a89a238..6409b57 100644
--- a/OpenSim/Services/Interfaces/IInventoryService.cs
+++ b/OpenSim/Services/Interfaces/IInventoryService.cs
@@ -147,7 +147,8 @@ namespace OpenSim.Services.Interfaces
147 /// </summary> 147 /// </summary>
148 /// <param name="item"></param> 148 /// <param name="item"></param>
149 /// <returns>true if the item was successfully deleted</returns> 149 /// <returns>true if the item was successfully deleted</returns>
150 bool DeleteItem(InventoryItemBase item); 150 //bool DeleteItem(InventoryItemBase item);
151 bool DeleteItems(UUID userID, List<UUID> itemIDs);
151 152
152 /// <summary> 153 /// <summary>
153 /// Get an item, given by its UUID 154 /// Get an item, given by its UUID
diff --git a/OpenSim/Services/InventoryService/InventoryService.cs b/OpenSim/Services/InventoryService/InventoryService.cs
index 65c2d96..69b1b28 100644
--- a/OpenSim/Services/InventoryService/InventoryService.cs
+++ b/OpenSim/Services/InventoryService/InventoryService.cs
@@ -387,12 +387,14 @@ namespace OpenSim.Services.InventoryService
387 } 387 }
388 388
389 // See IInventoryServices 389 // See IInventoryServices
390 public virtual bool DeleteItem(InventoryItemBase item) 390 public virtual bool DeleteItems(UUID owner, List<UUID> itemIDs)
391 { 391 {
392 m_log.InfoFormat( 392 m_log.InfoFormat(
393 "[INVENTORY SERVICE]: Deleting item {0} {1} from folder {2}", item.Name, item.ID, item.Folder); 393 "[INVENTORY SERVICE]: Deleting {0} items from user {1}", itemIDs.Count, owner);
394 394
395 m_Database.deleteInventoryItem(item.ID); 395 // uhh.....
396 foreach (UUID uuid in itemIDs)
397 m_Database.deleteInventoryItem(uuid);
396 398
397 // FIXME: Should return false on failure 399 // FIXME: Should return false on failure
398 return true; 400 return true;
@@ -439,10 +441,12 @@ namespace OpenSim.Services.InventoryService
439 441
440 List<InventoryItemBase> items = GetFolderItems(folder.Owner, folder.ID); 442 List<InventoryItemBase> items = GetFolderItems(folder.Owner, folder.ID);
441 443
444 List<UUID> uuids = new List<UUID>();
442 foreach (InventoryItemBase item in items) 445 foreach (InventoryItemBase item in items)
443 { 446 {
444 DeleteItem(item); 447 uuids.Add(item.ID);
445 } 448 }
449 DeleteItems(folder.Owner, uuids);
446 450
447 // FIXME: Should return false on failure 451 // FIXME: Should return false on failure
448 return true; 452 return true;
diff --git a/OpenSim/Tests/Common/Mock/TestInventoryService.cs b/OpenSim/Tests/Common/Mock/TestInventoryService.cs
index ba9cbe9..f770f75 100644
--- a/OpenSim/Tests/Common/Mock/TestInventoryService.cs
+++ b/OpenSim/Tests/Common/Mock/TestInventoryService.cs
@@ -143,7 +143,7 @@ namespace OpenSim.Tests.Common.Mock
143 return false; 143 return false;
144 } 144 }
145 145
146 public bool DeleteItem(InventoryItemBase item) 146 public bool DeleteItems(UUID ownerID, List<UUID> itemIDs)
147 { 147 {
148 return false; 148 return false;
149 } 149 }