diff --git a/OpenSim/Services/Connectors/Asset/AssetServicesConnector.cs b/OpenSim/Services/Connectors/Asset/AssetServicesConnector.cs index 9d6d9ad69c..7f32ad35a2 100644 --- a/OpenSim/Services/Connectors/Asset/AssetServicesConnector.cs +++ b/OpenSim/Services/Connectors/Asset/AssetServicesConnector.cs @@ -295,25 +295,30 @@ namespace OpenSim.Services.Connectors bool success = false; try { - AsynchronousRestObjectRequester.MakeRequest("GET", uri, 0, - delegate(AssetBase a) - { - if (m_Cache != null) - m_Cache.Cache(a); + AssetBase a = SynchronousRestObjectRequester.MakeRequest("GET", uri, 0, 30); + if (a != null) + { + if (m_Cache != null) + m_Cache.Cache(a); - List handlers; - lock (m_AssetHandlers) + List handlers; + lock (m_AssetHandlers) + { + handlers = m_AssetHandlers[id]; + m_AssetHandlers.Remove(id); + } + foreach (AssetRetrievedEx h in handlers) + { + Util.FireAndForget(x => { - handlers = m_AssetHandlers[id]; - m_AssetHandlers.Remove(id); - } - foreach (AssetRetrievedEx h in handlers) h.Invoke(a); - if (handlers != null) - handlers.Clear(); - }, 30); + }); + } + if (handlers != null) + handlers.Clear(); - success = true; + success = true; + } } finally { @@ -326,7 +331,7 @@ namespace OpenSim.Services.Connectors m_AssetHandlers.Remove(id); } if (handlers != null) - handlers.Clear(); + handlers.Clear(); } } }