diff options
Bug fix in HG asset posts. Get the inner assets not just from mem cache but from asset service, because the inner ones may not be in mem cache.
Diffstat (limited to 'OpenSim/Region/Framework/Scenes')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Hypergrid/HGAssetMapper.cs | 42 |
1 files changed, 24 insertions, 18 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Hypergrid/HGAssetMapper.cs b/OpenSim/Region/Framework/Scenes/Hypergrid/HGAssetMapper.cs index 48ea519..5242285 100644 --- a/OpenSim/Region/Framework/Scenes/Hypergrid/HGAssetMapper.cs +++ b/OpenSim/Region/Framework/Scenes/Hypergrid/HGAssetMapper.cs | |||
@@ -153,10 +153,11 @@ namespace OpenSim.Region.Framework.Scenes.Hypergrid | |||
153 | return false; | 153 | return false; |
154 | } | 154 | } |
155 | 155 | ||
156 | private bool PostAsset(GridAssetClient asscli, UUID assetID) | 156 | private bool PostAsset(GridAssetClient asscli, UUID assetID, bool isTexture) |
157 | { | 157 | { |
158 | AssetBase asset1; | 158 | AssetBase asset1; |
159 | m_scene.CommsManager.AssetCache.TryGetCachedAsset(assetID, out asset1); | 159 | //m_scene.CommsManager.AssetCache.TryGetCachedAsset(assetID, out asset1); |
160 | asset1 = m_scene.CommsManager.AssetCache.GetAsset(assetID, isTexture); | ||
160 | 161 | ||
161 | if (asset1 != null) | 162 | if (asset1 != null) |
162 | { | 163 | { |
@@ -377,25 +378,30 @@ namespace OpenSim.Region.Framework.Scenes.Hypergrid | |||
377 | m_assetServers.Add(userAssetURL, asscli); | 378 | m_assetServers.Add(userAssetURL, asscli); |
378 | } | 379 | } |
379 | m_log.Debug("[HGScene]: Posting object " + assetID + " to asset server " + userAssetURL); | 380 | m_log.Debug("[HGScene]: Posting object " + assetID + " to asset server " + userAssetURL); |
380 | bool success = PostAsset(asscli, assetID); | 381 | AssetBase ass1 = null; |
381 | 382 | m_scene.CommsManager.AssetCache.TryGetCachedAsset(assetID, out ass1); | |
382 | // Now the inside | 383 | if (ass1 != null) |
383 | Dictionary<UUID, bool> ids = SniffUUIDs(assetID); | ||
384 | Dump(ids); | ||
385 | foreach (KeyValuePair<UUID, bool> kvp in ids) | ||
386 | PostAsset(asscli, kvp.Key); | ||
387 | |||
388 | if (success) | ||
389 | { | 384 | { |
390 | m_log.Debug("[HGScene]: Successfully posted item to remote asset server " + userAssetURL); | 385 | bool success = PostAsset(asscli, assetID, (ass1.Type == (sbyte)AssetType.Texture)); |
391 | if (!m_assetMap.ContainsKey(assetID)) | 386 | |
392 | m_assetMap.Add(assetID, asscli); | 387 | // Now the inside |
388 | Dictionary<UUID, bool> ids = SniffUUIDs(assetID); | ||
389 | Dump(ids); | ||
390 | foreach (KeyValuePair<UUID, bool> kvp in ids) | ||
391 | PostAsset(asscli, kvp.Key, kvp.Value); | ||
392 | |||
393 | if (success) | ||
394 | { | ||
395 | m_log.Debug("[HGScene]: Successfully posted item to remote asset server " + userAssetURL); | ||
396 | if (!m_assetMap.ContainsKey(assetID)) | ||
397 | m_assetMap.Add(assetID, asscli); | ||
398 | } | ||
399 | else | ||
400 | m_log.Warn("[HGScene]: Could not post asset to remote asset server " + userAssetURL); | ||
401 | |||
393 | } | 402 | } |
394 | else | 403 | else |
395 | m_log.Warn("[HGScene]: Could not post asset to remote asset server " + userAssetURL); | 404 | m_log.Debug("[HGScene]: Something wrong with asset"); |
396 | |||
397 | //if (!m_assetMap.ContainsKey(itemID)) | ||
398 | // m_assetMap.Add(itemID, asscli); | ||
399 | } | 405 | } |
400 | else | 406 | else |
401 | m_log.Warn("[HGScene]: Unable to locate foreign user's asset server"); | 407 | m_log.Warn("[HGScene]: Unable to locate foreign user's asset server"); |