aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/Framework
diff options
context:
space:
mode:
authorMelanie2012-09-24 13:41:48 +0200
committerMelanie2012-09-24 13:41:48 +0200
commit6963b96bd05b17624a2e46726b033e179d50b280 (patch)
treedbb2c75876bf0bb7d530210dbe2665caae401897 /OpenSim/Region/CoreModules/Framework
parentChange the poll service to use a thread pool for replies to make sure the (diff)
downloadopensim-SC_OLD-6963b96bd05b17624a2e46726b033e179d50b280.zip
opensim-SC_OLD-6963b96bd05b17624a2e46726b033e179d50b280.tar.gz
opensim-SC_OLD-6963b96bd05b17624a2e46726b033e179d50b280.tar.bz2
opensim-SC_OLD-6963b96bd05b17624a2e46726b033e179d50b280.tar.xz
If an asset upload transaction doesn't exist for a CreateInventory request,
simply process it as if UUID.Zero had been given.
Diffstat (limited to 'OpenSim/Region/CoreModules/Framework')
-rw-r--r--OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs57
1 files changed, 28 insertions, 29 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
index 9a56f42..305a818 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);
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