aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Framework/IClientAPI.cs1
-rw-r--r--OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs45
-rw-r--r--OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/MeshCost.cs9
-rw-r--r--OpenSim/Region/ClientStack/Linden/Caps/GetTextureModule.cs14
-rw-r--r--OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs28
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs8
-rw-r--r--OpenSim/Region/CoreModules/Agent/AssetTransaction/AgentAssetsTransactions.cs12
-rw-r--r--OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetTransactionModule.cs4
-rw-r--r--OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs57
-rw-r--r--OpenSim/Region/Framework/Interfaces/IAgentAssetTransactions.cs2
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.Inventory.cs19
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs8
-rw-r--r--OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs7
-rw-r--r--OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs4
-rw-r--r--OpenSim/Tests/Common/Mock/TestClient.cs4
-rw-r--r--prebuild.xml1
16 files changed, 148 insertions, 75 deletions
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs
index 6be2bd7..5909ce1 100644
--- a/OpenSim/Framework/IClientAPI.cs
+++ b/OpenSim/Framework/IClientAPI.cs
@@ -1158,6 +1158,7 @@ namespace OpenSim.Framework
1158 /// </summary> 1158 /// </summary>
1159 /// <param name="Item"></param> 1159 /// <param name="Item"></param>
1160 void SendInventoryItemCreateUpdate(InventoryItemBase Item, uint callbackId); 1160 void SendInventoryItemCreateUpdate(InventoryItemBase Item, uint callbackId);
1161 void SendInventoryItemCreateUpdate(InventoryItemBase Item, UUID transactionID, uint callbackId);
1161 1162
1162 void SendRemoveInventoryItem(UUID itemID); 1163 void SendRemoveInventoryItem(UUID itemID);
1163 1164
diff --git a/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs b/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
index db088e7..c13c65b 100644
--- a/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
+++ b/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
@@ -33,6 +33,7 @@ using log4net;
33using HttpServer; 33using HttpServer;
34using OpenSim.Framework; 34using OpenSim.Framework;
35using OpenSim.Framework.Monitoring; 35using OpenSim.Framework.Monitoring;
36using Amib.Threading;
36 37
37 38
38/* 39/*
@@ -185,6 +186,8 @@ namespace OpenSim.Framework.Servers.HttpServer
185 private bool m_running = true; 186 private bool m_running = true;
186 private int slowCount = 0; 187 private int slowCount = 0;
187 188
189 private SmartThreadPool m_threadPool = new SmartThreadPool(20000, 12, 2);
190
188// private int m_timeout = 1000; // increase timeout 250; now use the event one 191// private int m_timeout = 1000; // increase timeout 250; now use the event one
189 192
190 public PollServiceRequestManager(BaseHttpServer pSrv, uint pWorkerThreadCount, int pTimeout) 193 public PollServiceRequestManager(BaseHttpServer pSrv, uint pWorkerThreadCount, int pTimeout)
@@ -353,18 +356,46 @@ namespace OpenSim.Framework.Servers.HttpServer
353 continue; 356 continue;
354 } 357 }
355 358
356 try 359 // "Normal" means the viewer evebt queue. We need to push these out fast.
360 // Process them inline. The rest go to the thread pool.
361 if (req.PollServiceArgs.Type == PollServiceEventArgs.EventType.Normal)
357 { 362 {
358 Hashtable responsedata = req.PollServiceArgs.GetEvents(req.RequestID, req.PollServiceArgs.Id, str.ReadToEnd()); 363 try
359 DoHTTPGruntWork(m_server, req, responsedata); 364 {
365 Hashtable responsedata = req.PollServiceArgs.GetEvents(req.RequestID, req.PollServiceArgs.Id, str.ReadToEnd());
366 DoHTTPGruntWork(m_server, req, responsedata);
367 }
368 catch (ObjectDisposedException) // Browser aborted before we could read body, server closed the stream
369 {
370 // Ignore it, no need to reply
371 }
372 finally
373 {
374 str.Close();
375 }
360 } 376 }
361 catch (ObjectDisposedException) // Browser aborted before we could read body, server closed the stream 377 else
362 { 378 {
363 // Ignore it, no need to reply 379 m_threadPool.QueueWorkItem(x =>
380 {
381 try
382 {
383 Hashtable responsedata = req.PollServiceArgs.GetEvents(req.RequestID, req.PollServiceArgs.Id, str.ReadToEnd());
384 DoHTTPGruntWork(m_server, req, responsedata);
385 }
386 catch (ObjectDisposedException) // Browser aborted before we could read body, server closed the stream
387 {
388 // Ignore it, no need to reply
389 }
390 finally
391 {
392 str.Close();
393 }
394
395 return null;
396 }, null);
364 } 397 }
365 398
366 str.Close();
367
368 } 399 }
369 else 400 else
370 { 401 {
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/MeshCost.cs b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/MeshCost.cs
index f03d8d8..66bb429 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/MeshCost.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/MeshCost.cs
@@ -35,10 +35,13 @@ namespace OpenSim.Region.ClientStack.Linden
35 // fees are normalized to 1.0 35 // fees are normalized to 1.0
36 // this parameters scale them to basic cost ( so 1.0 translates to 10 ) 36 // this parameters scale them to basic cost ( so 1.0 translates to 10 )
37 37
38 public float ModelMeshCostFactor = 1.0f; // scale total cost relative to basic (excluding textures) 38 public float ModelMeshCostFactor = 0f; //Free
39 public float ModelTextureCostFactor = 1.0f; // scale textures fee to basic. 39 public float ModelMinCostFactor = 0f; // Free
40 public float ModelMinCostFactor = 0.5f; // minimum total model free excluding textures 40 //public float ModelMeshCostFactor = 1.0f; // scale total cost relative to basic (excluding textures)
41 //public float ModelMinCostFactor = 0.5f; // minimum total model free excluding textures
41 42
43 public float ModelTextureCostFactor = 1.00f; // keep full price because texture price
44 // is based on it's storage needs not on usability
42 // itens costs in normalized values 45 // itens costs in normalized values
43 // ie will be multiplied by basicCost and factors above 46 // ie will be multiplied by basicCost and factors above
44 const float primCreationCost = 0.002f; // extra cost for each prim creation overhead 47 const float primCreationCost = 0.002f; // extra cost for each prim creation overhead
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/GetTextureModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/GetTextureModule.cs
index 0ac56ec..2000279 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/GetTextureModule.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/GetTextureModule.cs
@@ -146,14 +146,14 @@ namespace OpenSim.Region.ClientStack.Linden
146 { 146 {
147 m_scene = scene; 147 m_scene = scene;
148 148
149 HasEvents = (x, y) => { return this.responses.ContainsKey(x); }; 149 HasEvents = (x, y) => { lock (responses) return responses.ContainsKey(x); };
150 GetEvents = (x, y, s) => 150 GetEvents = (x, y, s) =>
151 { 151 {
152 lock (responses) 152 lock (responses)
153 { 153 {
154 try 154 try
155 { 155 {
156 return this.responses[x]; 156 return responses[x];
157 } 157 }
158 finally 158 finally
159 { 159 {
@@ -165,15 +165,15 @@ namespace OpenSim.Region.ClientStack.Linden
165 Request = (x, y) => 165 Request = (x, y) =>
166 { 166 {
167 y["RequestID"] = x.ToString(); 167 y["RequestID"] = x.ToString();
168 lock (this.requests) 168 lock (requests)
169 this.requests.Add(y); 169 requests.Add(y);
170 170
171 m_queue.Enqueue(this); 171 m_queue.Enqueue(this);
172 }; 172 };
173 173
174 NoEvents = (x, y) => 174 NoEvents = (x, y) =>
175 { 175 {
176 lock (this.requests) 176 lock (requests)
177 { 177 {
178 Hashtable request = requests.Find(id => id["RequestID"].ToString() == x.ToString()); 178 Hashtable request = requests.Find(id => id["RequestID"].ToString() == x.ToString());
179 requests.Remove(request); 179 requests.Remove(request);
@@ -198,7 +198,7 @@ namespace OpenSim.Region.ClientStack.Linden
198 198
199 try 199 try
200 { 200 {
201 lock (this.requests) 201 lock (requests)
202 { 202 {
203 request = requests[0]; 203 request = requests[0];
204 requests.RemoveAt(0); 204 requests.RemoveAt(0);
@@ -221,8 +221,10 @@ namespace OpenSim.Region.ClientStack.Linden
221 response["content_type"] = "text/plain"; 221 response["content_type"] = "text/plain";
222 response["keepalive"] = false; 222 response["keepalive"] = false;
223 response["reusecontext"] = false; 223 response["reusecontext"] = false;
224
224 lock (responses) 225 lock (responses)
225 responses[requestID] = response; 226 responses[requestID] = response;
227
226 return; 228 return;
227 } 229 }
228 230
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs
index 4908c2c..f76ea74 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs
@@ -144,31 +144,34 @@ namespace OpenSim.Region.ClientStack.Linden
144 public PollServiceInventoryEventArgs(UUID pId) : 144 public PollServiceInventoryEventArgs(UUID pId) :
145 base(null, null, null, null, pId, 30000) 145 base(null, null, null, null, pId, 30000)
146 { 146 {
147 HasEvents = (x, y) => { return this.responses.ContainsKey(x); }; 147 HasEvents = (x, y) => { lock (responses) return responses.ContainsKey(x); };
148 GetEvents = (x, y, s) => 148 GetEvents = (x, y, s) =>
149 { 149 {
150 try 150 lock (responses)
151 { 151 {
152 return this.responses[x]; 152 try
153 } 153 {
154 finally 154 return responses[x];
155 { 155 }
156 responses.Remove(x); 156 finally
157 {
158 responses.Remove(x);
159 }
157 } 160 }
158 }; 161 };
159 162
160 Request = (x, y) => 163 Request = (x, y) =>
161 { 164 {
162 y["RequestID"] = x.ToString(); 165 y["RequestID"] = x.ToString();
163 lock (this.requests) 166 lock (requests)
164 this.requests.Add(y); 167 requests.Add(y);
165 168
166 m_queue.Enqueue(this); 169 m_queue.Enqueue(this);
167 }; 170 };
168 171
169 NoEvents = (x, y) => 172 NoEvents = (x, y) =>
170 { 173 {
171 lock (this.requests) 174 lock (requests)
172 { 175 {
173 Hashtable request = requests.Find(id => id["RequestID"].ToString() == x.ToString()); 176 Hashtable request = requests.Find(id => id["RequestID"].ToString() == x.ToString());
174 requests.Remove(request); 177 requests.Remove(request);
@@ -192,7 +195,7 @@ namespace OpenSim.Region.ClientStack.Linden
192 195
193 try 196 try
194 { 197 {
195 lock (this.requests) 198 lock (requests)
196 { 199 {
197 request = requests[0]; 200 request = requests[0];
198 requests.RemoveAt(0); 201 requests.RemoveAt(0);
@@ -214,7 +217,8 @@ namespace OpenSim.Region.ClientStack.Linden
214 217
215 response["str_response_string"] = m_webFetchHandler.FetchInventoryDescendentsRequest(request["body"].ToString(), String.Empty, String.Empty, null, null); 218 response["str_response_string"] = m_webFetchHandler.FetchInventoryDescendentsRequest(request["body"].ToString(), String.Empty, String.Empty, null, null);
216 219
217 responses[requestID] = response; 220 lock (responses)
221 responses[requestID] = response;
218 } 222 }
219 } 223 }
220 224
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index 7749ef3..ee28914 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -2067,9 +2067,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP
2067 OutPacket(bulkUpdate, ThrottleOutPacketType.Asset); 2067 OutPacket(bulkUpdate, ThrottleOutPacketType.Asset);
2068 } 2068 }
2069 2069
2070 /// <see>IClientAPI.SendInventoryItemCreateUpdate(InventoryItemBase)</see>
2071 public void SendInventoryItemCreateUpdate(InventoryItemBase Item, uint callbackId) 2070 public void SendInventoryItemCreateUpdate(InventoryItemBase Item, uint callbackId)
2072 { 2071 {
2072 SendInventoryItemCreateUpdate(Item, UUID.Zero, callbackId);
2073 }
2074
2075 /// <see>IClientAPI.SendInventoryItemCreateUpdate(InventoryItemBase)</see>
2076 public void SendInventoryItemCreateUpdate(InventoryItemBase Item, UUID transactionID, uint callbackId)
2077 {
2073 const uint FULL_MASK_PERMISSIONS = (uint)PermissionMask.All; 2078 const uint FULL_MASK_PERMISSIONS = (uint)PermissionMask.All;
2074 2079
2075 UpdateCreateInventoryItemPacket InventoryReply 2080 UpdateCreateInventoryItemPacket InventoryReply
@@ -2079,6 +2084,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
2079 // TODO: don't create new blocks if recycling an old packet 2084 // TODO: don't create new blocks if recycling an old packet
2080 InventoryReply.AgentData.AgentID = AgentId; 2085 InventoryReply.AgentData.AgentID = AgentId;
2081 InventoryReply.AgentData.SimApproved = true; 2086 InventoryReply.AgentData.SimApproved = true;
2087 InventoryReply.AgentData.TransactionID = transactionID;
2082 InventoryReply.InventoryData = new UpdateCreateInventoryItemPacket.InventoryDataBlock[1]; 2088 InventoryReply.InventoryData = new UpdateCreateInventoryItemPacket.InventoryDataBlock[1];
2083 InventoryReply.InventoryData[0] = new UpdateCreateInventoryItemPacket.InventoryDataBlock(); 2089 InventoryReply.InventoryData[0] = new UpdateCreateInventoryItemPacket.InventoryDataBlock();
2084 InventoryReply.InventoryData[0].ItemID = Item.ID; 2090 InventoryReply.InventoryData[0].ItemID = Item.ID;
diff --git a/OpenSim/Region/CoreModules/Agent/AssetTransaction/AgentAssetsTransactions.cs b/OpenSim/Region/CoreModules/Agent/AssetTransaction/AgentAssetsTransactions.cs
index b557ffe..8a4fd8f 100644
--- a/OpenSim/Region/CoreModules/Agent/AssetTransaction/AgentAssetsTransactions.cs
+++ b/OpenSim/Region/CoreModules/Agent/AssetTransaction/AgentAssetsTransactions.cs
@@ -146,7 +146,7 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction
146 } 146 }
147 } 147 }
148 148
149 public void RequestCreateInventoryItem(IClientAPI remoteClient, 149 public bool RequestCreateInventoryItem(IClientAPI remoteClient,
150 UUID transactionID, UUID folderID, uint callbackID, 150 UUID transactionID, UUID folderID, uint callbackID,
151 string description, string name, sbyte invType, 151 string description, string name, sbyte invType,
152 sbyte type, byte wearableType, uint nextOwnerMask) 152 sbyte type, byte wearableType, uint nextOwnerMask)
@@ -160,14 +160,16 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction
160 } 160 }
161 161
162 if (uploader != null) 162 if (uploader != null)
163 {
163 uploader.RequestCreateInventoryItem( 164 uploader.RequestCreateInventoryItem(
164 remoteClient, transactionID, folderID, 165 remoteClient, transactionID, folderID,
165 callbackID, description, name, invType, type, 166 callbackID, description, name, invType, type,
166 wearableType, nextOwnerMask); 167 wearableType, nextOwnerMask);
167 else 168
168 m_log.ErrorFormat( 169 return true;
169 "[AGENT ASSET TRANSACTIONS]: Could not find uploader with transaction ID {0} when handling request to create inventory item {1} from {2}", 170 }
170 transactionID, name, remoteClient.Name); 171
172 return false;
171 } 173 }
172 174
173 /// <summary> 175 /// <summary>
diff --git a/OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetTransactionModule.cs b/OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetTransactionModule.cs
index 7081989..441c4ff 100644
--- a/OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetTransactionModule.cs
+++ b/OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetTransactionModule.cs
@@ -158,7 +158,7 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction
158 /// <param name="type"></param> 158 /// <param name="type"></param>
159 /// <param name="wearableType"></param> 159 /// <param name="wearableType"></param>
160 /// <param name="nextOwnerMask"></param> 160 /// <param name="nextOwnerMask"></param>
161 public void HandleItemCreationFromTransaction(IClientAPI remoteClient, 161 public bool HandleItemCreationFromTransaction(IClientAPI remoteClient,
162 UUID transactionID, UUID folderID, uint callbackID, 162 UUID transactionID, UUID folderID, uint callbackID,
163 string description, string name, sbyte invType, 163 string description, string name, sbyte invType,
164 sbyte type, byte wearableType, uint nextOwnerMask) 164 sbyte type, byte wearableType, uint nextOwnerMask)
@@ -169,7 +169,7 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction
169 AgentAssetTransactions transactions = 169 AgentAssetTransactions transactions =
170 GetUserTransactions(remoteClient.AgentId); 170 GetUserTransactions(remoteClient.AgentId);
171 171
172 transactions.RequestCreateInventoryItem(remoteClient, transactionID, 172 return transactions.RequestCreateInventoryItem(remoteClient, transactionID,
173 folderID, callbackID, description, name, invType, type, 173 folderID, callbackID, description, name, invType, type,
174 wearableType, nextOwnerMask); 174 wearableType, nextOwnerMask);
175 } 175 }
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
index 9a56f42..50f5f68 100644
--- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
@@ -186,44 +186,43 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
186 if (folder == null || folder.Owner != remoteClient.AgentId) 186 if (folder == null || folder.Owner != remoteClient.AgentId)
187 return; 187 return;
188 188
189 if (transactionID == UUID.Zero) 189 if (transactionID != UUID.Zero)
190 { 190 {
191 ScenePresence presence; 191 IAgentAssetTransactions agentTransactions = m_Scene.AgentTransactionsModule;
192 if (m_Scene.TryGetScenePresence(remoteClient.AgentId, out presence)) 192 if (agentTransactions != null)
193 { 193 {
194 byte[] data = null; 194 if (agentTransactions.HandleItemCreationFromTransaction(
195 remoteClient, transactionID, folderID, callbackID, description,
196 name, invType, assetType, wearableType, nextOwnerMask))
197 return;
198 }
199 }
195 200
196 if (invType == (sbyte)InventoryType.Landmark && presence != null) 201 ScenePresence presence;
197 { 202 if (m_Scene.TryGetScenePresence(remoteClient.AgentId, out presence))
198 string suffix = string.Empty, prefix = string.Empty; 203 {
199 string strdata = GenerateLandmark(presence, out prefix, out suffix); 204 byte[] data = null;
200 data = Encoding.ASCII.GetBytes(strdata);
201 name = prefix + name;
202 description += suffix;
203 }
204 205
205 AssetBase asset = m_Scene.CreateAsset(name, description, assetType, data, remoteClient.AgentId); 206 if (invType == (sbyte)InventoryType.Landmark && presence != null)
206 m_Scene.AssetService.Store(asset);
207 m_Scene.CreateNewInventoryItem(
208 remoteClient, remoteClient.AgentId.ToString(), string.Empty, folderID,
209 name, description, 0, callbackID, asset, invType, nextOwnerMask, creationDate);
210 }
211 else
212 { 207 {
213 m_log.ErrorFormat( 208 string suffix = string.Empty, prefix = string.Empty;
214 "[INVENTORY ACCESS MODULE]: ScenePresence for agent uuid {0} unexpectedly not found in CreateNewInventoryItem", 209 string strdata = GenerateLandmark(presence, out prefix, out suffix);
215 remoteClient.AgentId); 210 data = Encoding.ASCII.GetBytes(strdata);
211 name = prefix + name;
212 description += suffix;
216 } 213 }
214
215 AssetBase asset = m_Scene.CreateAsset(name, description, assetType, data, remoteClient.AgentId);
216 m_Scene.AssetService.Store(asset);
217 m_Scene.CreateNewInventoryItem(
218 remoteClient, remoteClient.AgentId.ToString(), string.Empty, folderID,
219 name, description, 0, callbackID, asset, invType, nextOwnerMask, creationDate,transactionID);
217 } 220 }
218 else 221 else
219 { 222 {
220 IAgentAssetTransactions agentTransactions = m_Scene.AgentTransactionsModule; 223 m_log.ErrorFormat(
221 if (agentTransactions != null) 224 "[INVENTORY ACCESS MODULE]: ScenePresence for agent uuid {0} unexpectedly not found in CreateNewInventoryItem",
222 { 225 remoteClient.AgentId);
223 agentTransactions.HandleItemCreationFromTransaction(
224 remoteClient, transactionID, folderID, callbackID, description,
225 name, invType, assetType, wearableType, nextOwnerMask);
226 }
227 } 226 }
228 } 227 }
229 228
diff --git a/OpenSim/Region/Framework/Interfaces/IAgentAssetTransactions.cs b/OpenSim/Region/Framework/Interfaces/IAgentAssetTransactions.cs
index 0cc8fb6..e0aad2b 100644
--- a/OpenSim/Region/Framework/Interfaces/IAgentAssetTransactions.cs
+++ b/OpenSim/Region/Framework/Interfaces/IAgentAssetTransactions.cs
@@ -36,7 +36,7 @@ namespace OpenSim.Region.Framework.Interfaces
36 void HandleItemUpdateFromTransaction(IClientAPI remoteClient, UUID transactionID, 36 void HandleItemUpdateFromTransaction(IClientAPI remoteClient, UUID transactionID,
37 InventoryItemBase item); 37 InventoryItemBase item);
38 38
39 void HandleItemCreationFromTransaction(IClientAPI remoteClient, UUID transactionID, UUID folderID, 39 bool HandleItemCreationFromTransaction(IClientAPI remoteClient, UUID transactionID, UUID folderID,
40 uint callbackID, string description, string name, sbyte invType, 40 uint callbackID, string description, string name, sbyte invType,
41 sbyte type, byte wearableType, uint nextOwnerMask); 41 sbyte type, byte wearableType, uint nextOwnerMask);
42 42
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 2d9a035..dd9210f 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -904,11 +904,22 @@ namespace OpenSim.Region.Framework.Scenes
904 public void CreateNewInventoryItem( 904 public void CreateNewInventoryItem(
905 IClientAPI remoteClient, string creatorID, string creatorData, UUID folderID, 905 IClientAPI remoteClient, string creatorID, string creatorData, UUID folderID,
906 string name, string description, uint flags, uint callbackID, 906 string name, string description, uint flags, uint callbackID,
907 AssetBase asset, sbyte invType, uint nextOwnerMask, int creationDate) 907 AssetBase asset, sbyte invType, uint nextOwnerMask, int creationDate, UUID transationID)
908 { 908 {
909 CreateNewInventoryItem( 909 CreateNewInventoryItem(
910 remoteClient, creatorID, creatorData, folderID, name, description, flags, callbackID, asset, invType, 910 remoteClient, creatorID, creatorData, folderID, name, description, flags, callbackID, asset, invType,
911 (uint)PermissionMask.All, (uint)PermissionMask.All, 0, nextOwnerMask, 0, creationDate); 911 (uint)PermissionMask.All, (uint)PermissionMask.All, 0, nextOwnerMask, 0, creationDate, transationID);
912 }
913
914
915 private void CreateNewInventoryItem(
916 IClientAPI remoteClient, string creatorID, string creatorData, UUID folderID,
917 string name, string description, uint flags, uint callbackID, AssetBase asset, sbyte invType,
918 uint baseMask, uint currentMask, uint everyoneMask, uint nextOwnerMask, uint groupMask, int creationDate)
919 {
920 CreateNewInventoryItem(remoteClient, creatorID, creatorData, folderID,
921 name, description, flags, callbackID, asset, invType,
922 baseMask, currentMask, everyoneMask, nextOwnerMask, groupMask, creationDate, UUID.Zero);
912 } 923 }
913 924
914 /// <summary> 925 /// <summary>
@@ -933,7 +944,7 @@ namespace OpenSim.Region.Framework.Scenes
933 private void CreateNewInventoryItem( 944 private void CreateNewInventoryItem(
934 IClientAPI remoteClient, string creatorID, string creatorData, UUID folderID, 945 IClientAPI remoteClient, string creatorID, string creatorData, UUID folderID,
935 string name, string description, uint flags, uint callbackID, AssetBase asset, sbyte invType, 946 string name, string description, uint flags, uint callbackID, AssetBase asset, sbyte invType,
936 uint baseMask, uint currentMask, uint everyoneMask, uint nextOwnerMask, uint groupMask, int creationDate) 947 uint baseMask, uint currentMask, uint everyoneMask, uint nextOwnerMask, uint groupMask, int creationDate,UUID transationID)
937 { 948 {
938 InventoryItemBase item = new InventoryItemBase(); 949 InventoryItemBase item = new InventoryItemBase();
939 item.Owner = remoteClient.AgentId; 950 item.Owner = remoteClient.AgentId;
@@ -956,7 +967,7 @@ namespace OpenSim.Region.Framework.Scenes
956 967
957 if (AddInventoryItem(item)) 968 if (AddInventoryItem(item))
958 { 969 {
959 remoteClient.SendInventoryItemCreateUpdate(item, callbackID); 970 remoteClient.SendInventoryItemCreateUpdate(item, transationID, callbackID);
960 } 971 }
961 else 972 else
962 { 973 {
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 56d289f..e6ad89c 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -2146,10 +2146,10 @@ namespace OpenSim.Region.Framework.Scenes
2146 { 2146 {
2147 if (asset != null) 2147 if (asset != null)
2148 SculptTextureCallback(asset); 2148 SculptTextureCallback(asset);
2149 else 2149// else
2150 m_log.WarnFormat( 2150// m_log.WarnFormat(
2151 "[SCENE OBJECT PART]: Part {0} {1} requested mesh/sculpt data for asset id {2} from asset service but received no data", 2151// "[SCENE OBJECT PART]: Part {0} {1} requested mesh/sculpt data for asset id {2} from asset service but received no data",
2152 Name, UUID, id); 2152// Name, UUID, id);
2153 } 2153 }
2154 2154
2155 /// <summary> 2155 /// <summary>
diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
index 3b83e58..a484300 100644
--- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
+++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
@@ -1100,7 +1100,12 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
1100 1100
1101 public void SendInventoryItemCreateUpdate(InventoryItemBase Item, uint callbackId) 1101 public void SendInventoryItemCreateUpdate(InventoryItemBase Item, uint callbackId)
1102 { 1102 {
1103 1103
1104 }
1105
1106 public void SendInventoryItemCreateUpdate(InventoryItemBase Item, UUID transactionID, uint callbackId)
1107 {
1108
1104 } 1109 }
1105 1110
1106 public void SendRemoveInventoryItem(UUID itemID) 1111 public void SendRemoveInventoryItem(UUID itemID)
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
index d00a6c0..7c693b6 100644
--- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
+++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
@@ -739,6 +739,10 @@ namespace OpenSim.Region.OptionalModules.World.NPC
739 { 739 {
740 } 740 }
741 741
742 public void SendInventoryItemCreateUpdate(InventoryItemBase Item, UUID transactionID, uint callbackId)
743 {
744 }
745
742 public virtual void SendRemoveInventoryItem(UUID itemID) 746 public virtual void SendRemoveInventoryItem(UUID itemID)
743 { 747 {
744 } 748 }
diff --git a/OpenSim/Tests/Common/Mock/TestClient.cs b/OpenSim/Tests/Common/Mock/TestClient.cs
index 6add130..49a8d26 100644
--- a/OpenSim/Tests/Common/Mock/TestClient.cs
+++ b/OpenSim/Tests/Common/Mock/TestClient.cs
@@ -716,6 +716,10 @@ namespace OpenSim.Tests.Common.Mock
716 { 716 {
717 } 717 }
718 718
719 public void SendInventoryItemCreateUpdate(InventoryItemBase Item, UUID transactionID, uint callbackId)
720 {
721 }
722
719 public virtual void SendRemoveInventoryItem(UUID itemID) 723 public virtual void SendRemoveInventoryItem(UUID itemID)
720 { 724 {
721 } 725 }
diff --git a/prebuild.xml b/prebuild.xml
index d3d040f..a717bb7 100644
--- a/prebuild.xml
+++ b/prebuild.xml
@@ -162,6 +162,7 @@
162 <Reference name="XMLRPC" path="../../../../bin/"/> 162 <Reference name="XMLRPC" path="../../../../bin/"/>
163 <Reference name="log4net" path="../../../../bin/"/> 163 <Reference name="log4net" path="../../../../bin/"/>
164 <Reference name="HttpServer_OpenSim" path="../../../../bin/"/> 164 <Reference name="HttpServer_OpenSim" path="../../../../bin/"/>
165 <Reference name="SmartThreadPool"/>
165 166
166 <Files> 167 <Files>
167 <Match pattern="*.cs" recurse="true"> 168 <Match pattern="*.cs" recurse="true">