diff options
Diffstat (limited to 'OpenSim/Region')
-rw-r--r-- | OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetXferUploader.cs | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetXferUploader.cs b/OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetXferUploader.cs index fdff199..fabb409 100644 --- a/OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetXferUploader.cs +++ b/OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetXferUploader.cs | |||
@@ -337,12 +337,16 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction | |||
337 | m_asset.Description = item.Description; | 337 | m_asset.Description = item.Description; |
338 | m_asset.Type = (sbyte)item.AssetType; | 338 | m_asset.Type = (sbyte)item.AssetType; |
339 | 339 | ||
340 | // We must always store the item at this point even if the asset hasn't finished uploading, in order | 340 | // remove redundante m_Scene.InventoryService.UpdateItem |
341 | // to avoid a race condition when the appearance module retrieves the item to set the asset id in | 341 | // if uploadState == UploadState.Complete) |
342 | // the AvatarAppearance structure. | 342 | // if (m_asset.FullID != UUID.Zero) |
343 | item.AssetID = m_asset.FullID; | 343 | // { |
344 | if (item.AssetID != UUID.Zero) | 344 | // We must always store the item at this point even if the asset hasn't finished uploading, in order |
345 | m_Scene.InventoryService.UpdateItem(item); | 345 | // to avoid a race condition when the appearance module retrieves the item to set the asset id in |
346 | // the AvatarAppearance structure. | ||
347 | // item.AssetID = m_asset.FullID; | ||
348 | // m_Scene.InventoryService.UpdateItem(item); | ||
349 | // } | ||
346 | 350 | ||
347 | if (m_uploadState == UploadState.Complete) | 351 | if (m_uploadState == UploadState.Complete) |
348 | { | 352 | { |
@@ -350,10 +354,21 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction | |||
350 | } | 354 | } |
351 | else | 355 | else |
352 | { | 356 | { |
353 | // m_log.DebugFormat( | 357 | // do it here to avoid the eventual race condition |
354 | // "[ASSET XFER UPLOADER]: Holding update inventory item request {0} for {1} pending completion of asset xfer for transaction {2}", | 358 | if (m_asset.FullID != UUID.Zero) |
355 | // item.Name, remoteClient.Name, transactionID); | 359 | { |
356 | 360 | // We must always store the item at this point even if the asset hasn't finished uploading, in order | |
361 | // to avoid a race condition when the appearance module retrieves the item to set the asset id in | ||
362 | // the AvatarAppearance structure. | ||
363 | item.AssetID = m_asset.FullID; | ||
364 | m_Scene.InventoryService.UpdateItem(item); | ||
365 | } | ||
366 | |||
367 | |||
368 | // m_log.DebugFormat( | ||
369 | // "[ASSET XFER UPLOADER]: Holding update inventory item request {0} for {1} pending completion of asset xfer for transaction {2}", | ||
370 | // item.Name, remoteClient.Name, transactionID); | ||
371 | |||
357 | m_updateItem = true; | 372 | m_updateItem = true; |
358 | m_updateItemData = item; | 373 | m_updateItemData = item; |
359 | } | 374 | } |