add a Drop method to PollService Event handlers, Drop requests on connections known to be lost or delay event check if they are sending a response

This commit is contained in:
UbitUmarov
2016-07-17 13:20:56 +01:00
parent 6a02ac634b
commit 442b272228
8 changed files with 126 additions and 44 deletions

View File

@@ -225,7 +225,7 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
string uri = "/lslhttp/" + urlcode.ToString() + "/";
PollServiceEventArgs args
= new PollServiceEventArgs(HttpRequestHandler, uri, HasEvents, GetEvents, NoEvents, urlcode, 25000);
= new PollServiceEventArgs(HttpRequestHandler, uri, HasEvents, GetEvents, NoEvents, Drop, urlcode, 25000);
args.Type = PollServiceEventArgs.EventType.LslHttp;
m_HttpServer.AddPollServiceHTTPHandler(uri, args);
@@ -276,7 +276,7 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
string uri = "/lslhttps/" + urlcode.ToString() + "/";
PollServiceEventArgs args
= new PollServiceEventArgs(HttpRequestHandler, uri, HasEvents, GetEvents, NoEvents, urlcode, 25000);
= new PollServiceEventArgs(HttpRequestHandler, uri, HasEvents, GetEvents, NoEvents, Drop, urlcode, 25000);
args.Type = PollServiceEventArgs.EventType.LslHttp;
m_HttpsServer.AddPollServiceHTTPHandler(uri, args);
@@ -530,6 +530,28 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
}
}
}
private void Drop(UUID requestID, UUID sessionID)
{
UrlData url = null;
lock (m_RequestMap)
{
if (m_RequestMap.ContainsKey(requestID))
{
url = m_RequestMap[requestID];
m_RequestMap.Remove(requestID);
if(url != null)
{
lock (url.requests)
{
if(url.requests.ContainsKey(requestID))
url.requests.Remove(requestID);
}
}
}
}
}
private Hashtable GetEvents(UUID requestID, UUID sessionID)
{
UrlData url = null;