From fbd0f5491b54655aef213796d1dd267f37f91b18 Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Fri, 5 Jun 2009 19:20:31 +0000 Subject: * A further fix for mantis 3641 (oar saves do not complete) * For some reason, if a null was recieved (indicating a missing asset), the code had stopped passing that on to the waiting lock, resulting in a perpetual freeze * This change passes the null on correctly * Many thanks to thomax for being insistent in presenting his analysis of the problem :) --- OpenSim/Region/Framework/Scenes/UuidGatherer.cs | 27 ++++++++++++++----------- 1 file changed, 15 insertions(+), 12 deletions(-) (limited to 'OpenSim/Region') diff --git a/OpenSim/Region/Framework/Scenes/UuidGatherer.cs b/OpenSim/Region/Framework/Scenes/UuidGatherer.cs index 12a4165..0bb7fff 100644 --- a/OpenSim/Region/Framework/Scenes/UuidGatherer.cs +++ b/OpenSim/Region/Framework/Scenes/UuidGatherer.cs @@ -177,8 +177,7 @@ namespace OpenSim.Region.Framework.Scenes protected void AssetReceived(string id, Object sender, AssetBase asset) { - if (asset != null) - AssetRequestCallback(asset.FullID, asset); + AssetRequestCallback(asset.FullID, asset); } /// @@ -243,17 +242,21 @@ namespace OpenSim.Region.Framework.Scenes protected void GetWearableAssetUuids(UUID wearableAssetUuid, IDictionary assetUuids) { AssetBase assetBase = GetAsset(wearableAssetUuid); - //m_log.Debug(new System.Text.ASCIIEncoding().GetString(bodypartAsset.Data)); - AssetWearable wearableAsset = new AssetBodypart(wearableAssetUuid, assetBase.Data); - wearableAsset.Decode(); - //m_log.DebugFormat( - // "[ARCHIVER]: Wearable asset {0} references {1} assets", wearableAssetUuid, wearableAsset.Textures.Count); - - foreach (UUID uuid in wearableAsset.Textures.Values) - { - //m_log.DebugFormat("[ARCHIVER]: Got bodypart uuid {0}", uuid); - assetUuids[uuid] = 1; + if (null != assetBase) + { + //m_log.Debug(new System.Text.ASCIIEncoding().GetString(bodypartAsset.Data)); + AssetWearable wearableAsset = new AssetBodypart(wearableAssetUuid, assetBase.Data); + wearableAsset.Decode(); + + //m_log.DebugFormat( + // "[ARCHIVER]: Wearable asset {0} references {1} assets", wearableAssetUuid, wearableAsset.Textures.Count); + + foreach (UUID uuid in wearableAsset.Textures.Values) + { + //m_log.DebugFormat("[ARCHIVER]: Got bodypart uuid {0}", uuid); + assetUuids[uuid] = 1; + } } } -- cgit v1.1