diff --git a/OpenSim/Capabilities/CapsHandlers.cs b/OpenSim/Capabilities/CapsHandlers.cs
index a0e9ebca47..1709f46c9c 100644
--- a/OpenSim/Capabilities/CapsHandlers.cs
+++ b/OpenSim/Capabilities/CapsHandlers.cs
@@ -51,11 +51,10 @@ namespace OpenSim.Framework.Capabilities
/// supplied BaseHttpServer.
///
/// base HTTP server
- /// host name of the HTTP
- /// server
+ /// host name of the HTTP server
/// HTTP port
public CapsHandlers(BaseHttpServer httpListener, string httpListenerHostname, uint httpListenerPort)
- : this (httpListener,httpListenerHostname,httpListenerPort, false)
+ : this(httpListener,httpListenerHostname,httpListenerPort, false)
{
}
@@ -88,44 +87,52 @@ namespace OpenSim.Framework.Capabilities
/// handler to be removed
public void Remove(string capsName)
{
- m_httpListener.RemoveStreamHandler("POST", m_capsHandlers[capsName].Path);
- m_httpListener.RemoveStreamHandler("GET", m_capsHandlers[capsName].Path);
- m_capsHandlers.Remove(capsName);
+ lock (m_capsHandlers)
+ {
+ m_httpListener.RemoveStreamHandler("POST", m_capsHandlers[capsName].Path);
+ m_httpListener.RemoveStreamHandler("GET", m_capsHandlers[capsName].Path);
+ m_capsHandlers.Remove(capsName);
+ }
}
public bool ContainsCap(string cap)
{
- return m_capsHandlers.ContainsKey(cap);
+ lock (m_capsHandlers)
+ return m_capsHandlers.ContainsKey(cap);
}
///
/// The indexer allows us to treat the CapsHandlers object
/// in an intuitive dictionary like way.
///
- ///
+ ///
/// The indexer will throw an exception when you try to
/// retrieve a cap handler for a cap that is not contained in
/// CapsHandlers.
- ///
+ ///
public IRequestHandler this[string idx]
{
get
{
- return m_capsHandlers[idx];
+ lock (m_capsHandlers)
+ return m_capsHandlers[idx];
}
set
{
- if (m_capsHandlers.ContainsKey(idx))
+ lock (m_capsHandlers)
{
- m_httpListener.RemoveStreamHandler("POST", m_capsHandlers[idx].Path);
- m_capsHandlers.Remove(idx);
+ if (m_capsHandlers.ContainsKey(idx))
+ {
+ m_httpListener.RemoveStreamHandler("POST", m_capsHandlers[idx].Path);
+ m_capsHandlers.Remove(idx);
+ }
+
+ if (null == value) return;
+
+ m_capsHandlers[idx] = value;
+ m_httpListener.AddStreamHandler(value);
}
-
- if (null == value) return;
-
- m_capsHandlers[idx] = value;
- m_httpListener.AddStreamHandler(value);
}
}
@@ -137,9 +144,12 @@ namespace OpenSim.Framework.Capabilities
{
get
{
- string[] __keys = new string[m_capsHandlers.Keys.Count];
- m_capsHandlers.Keys.CopyTo(__keys, 0);
- return __keys;
+ lock (m_capsHandlers)
+ {
+ string[] __keys = new string[m_capsHandlers.Keys.Count];
+ m_capsHandlers.Keys.CopyTo(__keys, 0);
+ return __keys;
+ }
}
}
@@ -157,15 +167,19 @@ namespace OpenSim.Framework.Capabilities
protocol = "https://";
string baseUrl = protocol + m_httpListenerHostName + ":" + m_httpListenerPort.ToString();
- foreach (string capsName in m_capsHandlers.Keys)
- {
- if (excludeSeed && "SEED" == capsName)
- continue;
- caps[capsName] = baseUrl + m_capsHandlers[capsName].Path;
+ lock (m_capsHandlers)
+ {
+ foreach (string capsName in m_capsHandlers.Keys)
+ {
+ if (excludeSeed && "SEED" == capsName)
+ continue;
+
+ caps[capsName] = baseUrl + m_capsHandlers[capsName].Path;
+ }
}
return caps;
}
}
-}
+}
\ No newline at end of file
diff --git a/OpenSim/Framework/Console/RemoteConsole.cs b/OpenSim/Framework/Console/RemoteConsole.cs
index 07de27a2fc..eabb62dd01 100644
--- a/OpenSim/Framework/Console/RemoteConsole.cs
+++ b/OpenSim/Framework/Console/RemoteConsole.cs
@@ -232,9 +232,8 @@ namespace OpenSim.Framework.Console
string uri = "/ReadResponses/" + sessionID.ToString() + "/";
- m_Server.AddPollServiceHTTPHandler(uri, HandleHttpPoll,
- new PollServiceEventArgs(null, HasEvents, GetEvents, NoEvents,
- sessionID));
+ m_Server.AddPollServiceHTTPHandler(
+ uri, new PollServiceEventArgs(null, HasEvents, GetEvents, NoEvents, sessionID));
XmlDocument xmldoc = new XmlDocument();
XmlNode xmlnode = xmldoc.CreateNode(XmlNodeType.XmlDeclaration,
@@ -266,11 +265,6 @@ namespace OpenSim.Framework.Console
return reply;
}
- private Hashtable HandleHttpPoll(Hashtable request)
- {
- return new Hashtable();
- }
-
private Hashtable HandleHttpCloseSession(Hashtable request)
{
DoExpire();
diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
index 6bffba511d..a8ece794cd 100644
--- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
+++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
@@ -227,21 +227,17 @@ namespace OpenSim.Framework.Servers.HttpServer
return new List(m_HTTPHandlers.Keys);
}
- public bool AddPollServiceHTTPHandler(string methodName, GenericHTTPMethod handler, PollServiceEventArgs args)
+ public bool AddPollServiceHTTPHandler(string methodName, PollServiceEventArgs args)
{
- bool pollHandlerResult = false;
lock (m_pollHandlers)
{
if (!m_pollHandlers.ContainsKey(methodName))
{
- m_pollHandlers.Add(methodName,args);
- pollHandlerResult = true;
+ m_pollHandlers.Add(methodName, args);
+ return true;
}
}
- if (pollHandlerResult)
- return AddHTTPHandler(methodName, handler);
-
return false;
}
@@ -1848,8 +1844,6 @@ namespace OpenSim.Framework.Servers.HttpServer
{
lock (m_pollHandlers)
m_pollHandlers.Remove(path);
-
- RemoveHTTPHandler(httpMethod, path);
}
public bool RemoveAgentHandler(string agent, IHttpAgentHandler handler)
diff --git a/OpenSim/Framework/Servers/HttpServer/Interfaces/IHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/Interfaces/IHttpServer.cs
index fd77984c22..db58f6f468 100644
--- a/OpenSim/Framework/Servers/HttpServer/Interfaces/IHttpServer.cs
+++ b/OpenSim/Framework/Servers/HttpServer/Interfaces/IHttpServer.cs
@@ -77,8 +77,8 @@ namespace OpenSim.Framework.Servers.HttpServer
/// true if the handler was successfully registered, false if a handler with the same name already existed.
///
bool AddHTTPHandler(string methodName, GenericHTTPMethod handler);
-
- bool AddPollServiceHTTPHandler(string methodName, GenericHTTPMethod handler, PollServiceEventArgs args);
+
+ bool AddPollServiceHTTPHandler(string methodName, PollServiceEventArgs args);
///
/// Adds a LLSD handler, yay.
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs
index 9f27abc5e7..8ba6f61caa 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs
@@ -361,7 +361,6 @@ namespace OpenSim.Region.ClientStack.Linden
// This will persist this beyond the expiry of the caps handlers
MainServer.Instance.AddPollServiceHTTPHandler(
capsBase + EventQueueGetUUID.ToString() + "/",
- EventQueuePoll,
new PollServiceEventArgs(null, HasEvents, GetEvents, NoEvents, agentID));
Random rnd = new Random(Environment.TickCount);
@@ -578,11 +577,6 @@ namespace OpenSim.Region.ClientStack.Linden
// return responsedata;
// }
- public Hashtable EventQueuePoll(Hashtable request)
- {
- return new Hashtable();
- }
-
// public Hashtable EventQueuePath2(Hashtable request)
// {
// string capuuid = (string)request["uri"]; //path.Replace("/CAPS/EQG/","");
diff --git a/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs b/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs
index 7377ceb0a6..67d99e027a 100644
--- a/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs
+++ b/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs
@@ -90,11 +90,6 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
get { return null; }
}
- private Hashtable HandleHttpPoll(Hashtable request)
- {
- return new Hashtable();
- }
-
public string Name
{
get { return "UrlModule"; }
@@ -171,9 +166,9 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
string uri = "/lslhttp/" + urlcode.ToString() + "/";
- m_HttpServer.AddPollServiceHTTPHandler(uri,HandleHttpPoll,
- new PollServiceEventArgs(HttpRequestHandler,HasEvents, GetEvents, NoEvents,
- urlcode));
+ m_HttpServer.AddPollServiceHTTPHandler(
+ uri,
+ new PollServiceEventArgs(HttpRequestHandler, HasEvents, GetEvents, NoEvents, urlcode));
engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_GRANTED", url });
}
@@ -213,9 +208,9 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
string uri = "/lslhttps/" + urlcode.ToString() + "/";
- m_HttpsServer.AddPollServiceHTTPHandler(uri,HandleHttpPoll,
- new PollServiceEventArgs(HttpRequestHandler,HasEvents, GetEvents, NoEvents,
- urlcode));
+ m_HttpsServer.AddPollServiceHTTPHandler(
+ uri,
+ new PollServiceEventArgs(HttpRequestHandler, HasEvents, GetEvents, NoEvents, urlcode));
engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_GRANTED", url });
}