From 877713999ce9bcf63e9fafa76cc7d2283ee2e6c2 Mon Sep 17 00:00:00 2001
From: Justin Clarke Casey
Date: Wed, 20 Feb 2008 17:34:10 +0000
Subject: * Report 'asset not found' situations back to
UserTextureDownloadService * This fixes some of the 'runaway downloads'
problem but not all of it * Also fix up logging messages so texture requests
are reported as such rather than as assets
---
.../Modules/UserTextureDownloadService.cs | 24 +++++++++++++++++-----
1 file changed, 19 insertions(+), 5 deletions(-)
(limited to 'OpenSim/Region/Environment/Modules')
diff --git a/OpenSim/Region/Environment/Modules/UserTextureDownloadService.cs b/OpenSim/Region/Environment/Modules/UserTextureDownloadService.cs
index 4a94266..24f0981 100644
--- a/OpenSim/Region/Environment/Modules/UserTextureDownloadService.cs
+++ b/OpenSim/Region/Environment/Modules/UserTextureDownloadService.cs
@@ -95,7 +95,7 @@ namespace OpenSim.Region.Environment.Modules
new TextureSender(client, e.DiscardLevel, e.PacketNumber);
m_textureSenders.Add(e.RequestedAssetID, requestHandler);
- m_scene.AssetCache.GetAsset(e.RequestedAssetID, TextureCallback);
+ m_scene.AssetCache.GetAsset(e.RequestedAssetID, TextureCallback, true);
}
}
}
@@ -117,7 +117,7 @@ namespace OpenSim.Region.Environment.Modules
///
///
///
- public void TextureCallback(LLUUID textureID, AssetBase asset)
+ public void TextureCallback(LLUUID textureID, AssetBase texture)
{
lock (m_textureSenders)
{
@@ -125,10 +125,24 @@ namespace OpenSim.Region.Environment.Modules
if (m_textureSenders.TryGetValue(textureID, out textureSender))
{
- if (!textureSender.ImageLoaded)
+ if (null != texture)
{
- textureSender.TextureReceived(asset);
- EnqueueTextureSender(textureSender);
+ if (!textureSender.ImageLoaded)
+ {
+ textureSender.TextureReceived(texture);
+ EnqueueTextureSender(textureSender);
+ }
+ }
+ else
+ {
+ // Right now, leaving it up to lower level asset server code to post the fact that
+ // this texture could not be found
+
+ // TODO Send packet back to the client telling it not to expect the texture
+ // The absence of this packet doesn't appear to be causing it a problem right now
+
+ //m_log.InfoFormat("Removing {0} from pending downloads count", textureID);
+ m_scene.AddPendingDownloads(-1);
}
//m_log.InfoFormat("[TEXTURE SENDER] Removing texture sender with uuid {0}", textureID);
--
cgit v1.1