mirror of
https://github.com/opensim/opensim.git
synced 2026-08-06 01:06:30 +08:00
cache bad folders requests for 30s. Suitcase can induce a ton of this, and viewers keep requesting
This commit is contained in:
@@ -28,7 +28,9 @@
|
||||
using Mono.Addins;
|
||||
using Nini.Config;
|
||||
using OpenMetaverse;
|
||||
using OpenMetaverse.StructuredData;
|
||||
using OpenSim.Capabilities.Handlers;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Framework.Servers.HttpServer;
|
||||
using OpenSim.Region.Framework.Interfaces;
|
||||
using OpenSim.Region.Framework.Scenes;
|
||||
@@ -53,6 +55,7 @@ namespace OpenSim.Region.ClientStack.Linden
|
||||
private IInventoryService m_inventoryService = null;
|
||||
private ILibraryService m_LibraryService = null;
|
||||
private string m_fetchInventory2Url;
|
||||
private ExpiringKey<UUID> m_badRequests;
|
||||
|
||||
#region ISharedRegionModule Members
|
||||
|
||||
@@ -83,6 +86,8 @@ namespace OpenSim.Region.ClientStack.Linden
|
||||
{
|
||||
m_inventoryService = null;
|
||||
m_LibraryService = null;
|
||||
m_badRequests.Dispose();
|
||||
m_badRequests = null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,6 +101,9 @@ namespace OpenSim.Region.ClientStack.Linden
|
||||
if(m_LibraryService == null)
|
||||
m_LibraryService = s.LibraryService;
|
||||
|
||||
if(m_badRequests == null)
|
||||
m_badRequests = new ExpiringKey<UUID>(30000);
|
||||
|
||||
if (m_inventoryService != null)
|
||||
{
|
||||
s.EventManager.OnRegisterCaps += RegisterCaps;
|
||||
@@ -122,7 +130,11 @@ namespace OpenSim.Region.ClientStack.Linden
|
||||
{
|
||||
FetchInventory2Handler fetchHandler = new FetchInventory2Handler(m_inventoryService, agentID);
|
||||
caps.RegisterSimpleHandler("FetchInventory2",
|
||||
new SimpleOSDMapHandler("POST", "/" + UUID.Random(), fetchHandler.FetchInventorySimpleRequest));
|
||||
new SimpleOSDMapHandler("POST", "/" + UUID.Random(), delegate (IOSHttpRequest httpRequest, IOSHttpResponse httpResponse, OSDMap map)
|
||||
{
|
||||
fetchHandler.FetchInventorySimpleRequest(httpRequest, httpResponse, map, m_badRequests);
|
||||
}
|
||||
));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -37,6 +37,7 @@ using log4net;
|
||||
using Nini.Config;
|
||||
using Mono.Addins;
|
||||
using OpenMetaverse;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Framework.Servers.HttpServer;
|
||||
using OpenSim.Region.Framework.Interfaces;
|
||||
using OpenSim.Region.Framework.Scenes;
|
||||
@@ -90,6 +91,7 @@ namespace OpenSim.Region.ClientStack.Linden
|
||||
private ILibraryService m_LibraryService;
|
||||
|
||||
private bool m_Enabled;
|
||||
private ExpiringKey<UUID> m_badRequests;
|
||||
|
||||
private string m_fetchInventoryDescendents2Url;
|
||||
// private string m_webFetchInventoryDescendentsUrl;
|
||||
@@ -193,6 +195,9 @@ namespace OpenSim.Region.ClientStack.Linden
|
||||
|
||||
Scene.EventManager.OnRegisterCaps += RegisterCaps;
|
||||
|
||||
if(m_badRequests == null)
|
||||
m_badRequests = new ExpiringKey<UUID>(30000);
|
||||
|
||||
m_NumberScenes++;
|
||||
|
||||
int nworkers = 2; // was 2
|
||||
@@ -231,6 +236,8 @@ namespace OpenSim.Region.ClientStack.Linden
|
||||
Watchdog.AbortThread(t.ManagedThreadId);
|
||||
|
||||
m_workerThreads = null;
|
||||
m_badRequests.Dispose();
|
||||
m_badRequests = null;
|
||||
}
|
||||
}
|
||||
// m_queue.Dispose();
|
||||
@@ -331,7 +338,7 @@ namespace OpenSim.Region.ClientStack.Linden
|
||||
}
|
||||
|
||||
OSHttpResponse osresponse = new OSHttpResponse(requestinfo.request);
|
||||
m_webFetchHandler.FetchInventoryDescendentsRequest(requestinfo.request, osresponse);
|
||||
m_webFetchHandler.FetchInventoryDescendentsRequest(requestinfo.request, osresponse, m_module.m_badRequests);
|
||||
requestinfo.request.InputStream.Dispose();
|
||||
|
||||
lock (responses)
|
||||
|
||||
Reference in New Issue
Block a user