* Properly guard removal of asset request lists on AssetCache.AssetNotFound (my own bug)
parent
53d5aeec24
commit
f3190810d3
|
@ -44,8 +44,8 @@ namespace OpenSim.Framework.Communications.Cache
|
|||
///
|
||||
/// This class actually encapsulates two largely separate mechanisms. One mechanism fetches assets either
|
||||
/// synchronously or async and passes the data back to the requester. The second mechanism fetches assets and
|
||||
/// sends packetised data directly back to the client. The only point where they meets is AssetReceived() and
|
||||
/// AssetNotFound().
|
||||
/// sends packetised data directly back to the client. The only point where they meet is AssetReceived() and
|
||||
/// AssetNotFound(), which means they do share the same asset and texture caches.
|
||||
///
|
||||
/// TODO Assets in this cache are effectively immortal (they are never disposed off through old age).
|
||||
/// This is not a huge problem at the moment since other memory use usually dwarfs that used by assets
|
||||
|
@ -512,6 +512,8 @@ namespace OpenSim.Framework.Communications.Cache
|
|||
|
||||
// Notify requesters for this asset
|
||||
lock (RequestLists)
|
||||
{
|
||||
if (RequestLists.ContainsKey(assetID))
|
||||
{
|
||||
AssetRequestsList reqList = RequestLists[assetID];
|
||||
foreach (NewAssetRequest req in reqList.Requests)
|
||||
|
@ -520,7 +522,7 @@ namespace OpenSim.Framework.Communications.Cache
|
|||
}
|
||||
|
||||
RequestLists.Remove(assetID);
|
||||
reqList.Requests.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -115,7 +115,7 @@ namespace OpenSim.Framework.Communications.Cache
|
|||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
m_log.Error("[ASSETSERVER]: " + e.Message);
|
||||
m_log.Error("[ASSET SERVER]: " + e.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue