From b91857b8f7809b9bddfa5d36c1ccf84e8142d22b Mon Sep 17 00:00:00 2001 From: Dr Scofield Date: Thu, 23 Oct 2008 10:15:19 +0000 Subject: Adding AddXmlRpcHandler(name, method, bool) to selectively disable KeepAlive for certain XmlRpc handlers. Making use of new AddXmlRpcHandler method in RemoteAdminPlugin to avoid clients waiting indefinitely for response. taking note of BaseHttpServer parameter in CommunicationsManager constructor (was passed it but then just ignored so far). --- OpenSim/Framework/Servers/BaseHttpServer.cs | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'OpenSim/Framework/Servers') diff --git a/OpenSim/Framework/Servers/BaseHttpServer.cs b/OpenSim/Framework/Servers/BaseHttpServer.cs index 7e8130a..3d125fb 100644 --- a/OpenSim/Framework/Servers/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/BaseHttpServer.cs @@ -54,6 +54,7 @@ namespace OpenSim.Framework.Servers protected HttpListener m_httpListener; protected CoolHTTPListener m_httpListener2; protected Dictionary m_rpcHandlers = new Dictionary(); + protected Dictionary m_rpcHandlersKeepAlive = new Dictionary(); protected DefaultLLSDMethod m_defaultLlsdHandler = null; // <-- Moving away from the monolithic.. and going to /registered/ protected Dictionary m_llsdHandlers = new Dictionary(); protected Dictionary m_streamHandlers = new Dictionary(); @@ -141,6 +142,17 @@ namespace OpenSim.Framework.Servers lock (m_rpcHandlers) { m_rpcHandlers[method] = handler; + m_rpcHandlersKeepAlive[method] = true; // default + return true; + } + } + + public bool AddXmlRPCHandler(string method, XmlRpcMethod handler, bool keepAlive) + { + lock (m_rpcHandlers) + { + m_rpcHandlers[method] = handler; + m_rpcHandlersKeepAlive[method] = keepAlive; // default return true; } } @@ -584,6 +596,7 @@ namespace OpenSim.Framework.Servers } responseString = XmlRpcResponseSerializer.Singleton.Serialize(xmlRpcResponse); + response.KeepAlive = m_rpcHandlersKeepAlive[methodName]; } else { -- cgit v1.1