Also fix the locking of url.requests and tidy the locks in general
parent
3d49f5bf57
commit
1f17960e67
|
@ -351,14 +351,16 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
|
||||||
{
|
{
|
||||||
Hashtable response = new Hashtable();
|
Hashtable response = new Hashtable();
|
||||||
UrlData url;
|
UrlData url;
|
||||||
|
int startTime = 0;
|
||||||
lock (m_RequestMap)
|
lock (m_RequestMap)
|
||||||
{
|
{
|
||||||
if (!m_RequestMap.ContainsKey(requestID))
|
if (!m_RequestMap.ContainsKey(requestID))
|
||||||
return response;
|
return response;
|
||||||
url = m_RequestMap[requestID];
|
url = m_RequestMap[requestID];
|
||||||
|
startTime = url.requests[requestID].startTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (System.Environment.TickCount - url.requests[requestID].startTime > 25000)
|
if (System.Environment.TickCount - startTime > 25000)
|
||||||
{
|
{
|
||||||
response["int_response_code"] = 500;
|
response["int_response_code"] = 500;
|
||||||
response["str_response_string"] = "Script timeout";
|
response["str_response_string"] = "Script timeout";
|
||||||
|
@ -367,13 +369,13 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
|
||||||
response["reusecontext"] = false;
|
response["reusecontext"] = false;
|
||||||
|
|
||||||
//remove from map
|
//remove from map
|
||||||
lock (url)
|
lock (url.requests)
|
||||||
{
|
{
|
||||||
url.requests.Remove(requestID);
|
url.requests.Remove(requestID);
|
||||||
lock (m_RequestMap)
|
}
|
||||||
{
|
lock (m_RequestMap)
|
||||||
m_RequestMap.Remove(requestID);
|
{
|
||||||
}
|
m_RequestMap.Remove(requestID);
|
||||||
}
|
}
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
|
@ -394,22 +396,25 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
url = m_RequestMap[requestID];
|
url = m_RequestMap[requestID];
|
||||||
|
}
|
||||||
|
lock (url.requests)
|
||||||
|
{
|
||||||
if (!url.requests.ContainsKey(requestID))
|
if (!url.requests.ContainsKey(requestID))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (System.Environment.TickCount - url.requests[requestID].startTime > 25000)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (url.requests[requestID].requestDone)
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (System.Environment.TickCount-url.requests[requestID].startTime>25000)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (url.requests[requestID].requestDone)
|
|
||||||
return true;
|
|
||||||
else
|
|
||||||
return false;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
private Hashtable GetEvents(UUID requestID, UUID sessionID, string request)
|
private Hashtable GetEvents(UUID requestID, UUID sessionID, string request)
|
||||||
{
|
{
|
||||||
|
@ -421,6 +426,9 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
|
||||||
if (!m_RequestMap.ContainsKey(requestID))
|
if (!m_RequestMap.ContainsKey(requestID))
|
||||||
return NoEvents(requestID,sessionID);
|
return NoEvents(requestID,sessionID);
|
||||||
url = m_RequestMap[requestID];
|
url = m_RequestMap[requestID];
|
||||||
|
}
|
||||||
|
lock (url.requests)
|
||||||
|
{
|
||||||
requestData = url.requests[requestID];
|
requestData = url.requests[requestID];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -446,13 +454,13 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
|
||||||
response["reusecontext"] = false;
|
response["reusecontext"] = false;
|
||||||
|
|
||||||
//remove from map
|
//remove from map
|
||||||
lock (url)
|
lock (url.requests)
|
||||||
{
|
{
|
||||||
url.requests.Remove(requestID);
|
url.requests.Remove(requestID);
|
||||||
lock (m_RequestMap)
|
}
|
||||||
{
|
lock (m_RequestMap)
|
||||||
m_RequestMap.Remove(requestID);
|
{
|
||||||
}
|
m_RequestMap.Remove(requestID);
|
||||||
}
|
}
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
|
|
Loading…
Reference in New Issue