diff options
author | Dr Scofield | 2008-10-23 10:15:19 +0000 |
---|---|---|
committer | Dr Scofield | 2008-10-23 10:15:19 +0000 |
commit | b91857b8f7809b9bddfa5d36c1ccf84e8142d22b (patch) | |
tree | 3fd68658d7b3611b37d9b5017655f56f3c693d33 | |
parent | cleaning up commented lines in IRCConnector; changing access_password (diff) | |
download | opensim-SC_OLD-b91857b8f7809b9bddfa5d36c1ccf84e8142d22b.zip opensim-SC_OLD-b91857b8f7809b9bddfa5d36c1ccf84e8142d22b.tar.gz opensim-SC_OLD-b91857b8f7809b9bddfa5d36c1ccf84e8142d22b.tar.bz2 opensim-SC_OLD-b91857b8f7809b9bddfa5d36c1ccf84e8142d22b.tar.xz |
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).
3 files changed, 35 insertions, 14 deletions
diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index fed6ecb..d7ca679 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs | |||
@@ -85,20 +85,20 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
85 | m_app = openSim; | 85 | m_app = openSim; |
86 | m_httpd = openSim.HttpServer; | 86 | m_httpd = openSim.HttpServer; |
87 | 87 | ||
88 | m_httpd.AddXmlRPCHandler("admin_create_region", XmlRpcCreateRegionMethod); | 88 | m_httpd.AddXmlRPCHandler("admin_create_region", XmlRpcCreateRegionMethod, false); |
89 | m_httpd.AddXmlRPCHandler("admin_delete_region", XmlRpcDeleteRegionMethod); | 89 | m_httpd.AddXmlRPCHandler("admin_delete_region", XmlRpcDeleteRegionMethod, false); |
90 | m_httpd.AddXmlRPCHandler("admin_shutdown", XmlRpcShutdownMethod); | 90 | m_httpd.AddXmlRPCHandler("admin_shutdown", XmlRpcShutdownMethod, false); |
91 | m_httpd.AddXmlRPCHandler("admin_broadcast", XmlRpcAlertMethod); | 91 | m_httpd.AddXmlRPCHandler("admin_broadcast", XmlRpcAlertMethod, false); |
92 | m_httpd.AddXmlRPCHandler("admin_restart", XmlRpcRestartMethod); | 92 | m_httpd.AddXmlRPCHandler("admin_restart", XmlRpcRestartMethod, false); |
93 | m_httpd.AddXmlRPCHandler("admin_load_heightmap", XmlRpcLoadHeightmapMethod); | 93 | m_httpd.AddXmlRPCHandler("admin_load_heightmap", XmlRpcLoadHeightmapMethod, false); |
94 | m_httpd.AddXmlRPCHandler("admin_create_user", XmlRpcCreateUserMethod); | 94 | m_httpd.AddXmlRPCHandler("admin_create_user", XmlRpcCreateUserMethod, false); |
95 | m_httpd.AddXmlRPCHandler("admin_exists_user", XmlRpcUserExistsMethod); | 95 | m_httpd.AddXmlRPCHandler("admin_exists_user", XmlRpcUserExistsMethod, false); |
96 | m_httpd.AddXmlRPCHandler("admin_update_user", XmlRpcUpdateUserAccountMethod); | 96 | m_httpd.AddXmlRPCHandler("admin_update_user", XmlRpcUpdateUserAccountMethod, false); |
97 | m_httpd.AddXmlRPCHandler("admin_load_xml", XmlRpcLoadXMLMethod); | 97 | m_httpd.AddXmlRPCHandler("admin_load_xml", XmlRpcLoadXMLMethod, false); |
98 | m_httpd.AddXmlRPCHandler("admin_save_xml", XmlRpcSaveXMLMethod); | 98 | m_httpd.AddXmlRPCHandler("admin_save_xml", XmlRpcSaveXMLMethod, false); |
99 | m_httpd.AddXmlRPCHandler("admin_load_oar", XmlRpcLoadOARMethod); | 99 | m_httpd.AddXmlRPCHandler("admin_load_oar", XmlRpcLoadOARMethod, false); |
100 | m_httpd.AddXmlRPCHandler("admin_save_oar", XmlRpcSaveOARMethod); | 100 | m_httpd.AddXmlRPCHandler("admin_save_oar", XmlRpcSaveOARMethod, false); |
101 | m_httpd.AddXmlRPCHandler("admin_region_query", XmlRpcRegionQueryMethod); | 101 | m_httpd.AddXmlRPCHandler("admin_region_query", XmlRpcRegionQueryMethod, false); |
102 | } | 102 | } |
103 | } | 103 | } |
104 | catch (NullReferenceException) | 104 | catch (NullReferenceException) |
diff --git a/OpenSim/Framework/Communications/CommunicationsManager.cs b/OpenSim/Framework/Communications/CommunicationsManager.cs index 1bf8c05..dfe0fdc 100644 --- a/OpenSim/Framework/Communications/CommunicationsManager.cs +++ b/OpenSim/Framework/Communications/CommunicationsManager.cs | |||
@@ -104,6 +104,13 @@ namespace OpenSim.Framework.Communications | |||
104 | /// </summary> | 104 | /// </summary> |
105 | protected IUserServiceAdmin m_userServiceAdmin; | 105 | protected IUserServiceAdmin m_userServiceAdmin; |
106 | 106 | ||
107 | |||
108 | public BaseHttpServer HttpServer | ||
109 | { | ||
110 | get { return m_httpServer; } | ||
111 | } | ||
112 | protected BaseHttpServer m_httpServer; | ||
113 | |||
107 | /// <summary> | 114 | /// <summary> |
108 | /// Constructor | 115 | /// Constructor |
109 | /// </summary> | 116 | /// </summary> |
@@ -117,6 +124,7 @@ namespace OpenSim.Framework.Communications | |||
117 | m_networkServersInfo = serversInfo; | 124 | m_networkServersInfo = serversInfo; |
118 | m_assetCache = assetCache; | 125 | m_assetCache = assetCache; |
119 | m_userProfileCacheService = new UserProfileCacheService(this, libraryRootFolder); | 126 | m_userProfileCacheService = new UserProfileCacheService(this, libraryRootFolder); |
127 | m_httpServer = httpServer; | ||
120 | // m_transactionsManager = new AgentAssetTransactionsManager(this, dumpAssetsToFile); | 128 | // m_transactionsManager = new AgentAssetTransactionsManager(this, dumpAssetsToFile); |
121 | } | 129 | } |
122 | 130 | ||
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 | |||
54 | protected HttpListener m_httpListener; | 54 | protected HttpListener m_httpListener; |
55 | protected CoolHTTPListener m_httpListener2; | 55 | protected CoolHTTPListener m_httpListener2; |
56 | protected Dictionary<string, XmlRpcMethod> m_rpcHandlers = new Dictionary<string, XmlRpcMethod>(); | 56 | protected Dictionary<string, XmlRpcMethod> m_rpcHandlers = new Dictionary<string, XmlRpcMethod>(); |
57 | protected Dictionary<string, bool> m_rpcHandlersKeepAlive = new Dictionary<string, bool>(); | ||
57 | protected DefaultLLSDMethod m_defaultLlsdHandler = null; // <-- Moving away from the monolithic.. and going to /registered/ | 58 | protected DefaultLLSDMethod m_defaultLlsdHandler = null; // <-- Moving away from the monolithic.. and going to /registered/ |
58 | protected Dictionary<string, LLSDMethod> m_llsdHandlers = new Dictionary<string, LLSDMethod>(); | 59 | protected Dictionary<string, LLSDMethod> m_llsdHandlers = new Dictionary<string, LLSDMethod>(); |
59 | protected Dictionary<string, IRequestHandler> m_streamHandlers = new Dictionary<string, IRequestHandler>(); | 60 | protected Dictionary<string, IRequestHandler> m_streamHandlers = new Dictionary<string, IRequestHandler>(); |
@@ -141,6 +142,17 @@ namespace OpenSim.Framework.Servers | |||
141 | lock (m_rpcHandlers) | 142 | lock (m_rpcHandlers) |
142 | { | 143 | { |
143 | m_rpcHandlers[method] = handler; | 144 | m_rpcHandlers[method] = handler; |
145 | m_rpcHandlersKeepAlive[method] = true; // default | ||
146 | return true; | ||
147 | } | ||
148 | } | ||
149 | |||
150 | public bool AddXmlRPCHandler(string method, XmlRpcMethod handler, bool keepAlive) | ||
151 | { | ||
152 | lock (m_rpcHandlers) | ||
153 | { | ||
154 | m_rpcHandlers[method] = handler; | ||
155 | m_rpcHandlersKeepAlive[method] = keepAlive; // default | ||
144 | return true; | 156 | return true; |
145 | } | 157 | } |
146 | } | 158 | } |
@@ -584,6 +596,7 @@ namespace OpenSim.Framework.Servers | |||
584 | } | 596 | } |
585 | 597 | ||
586 | responseString = XmlRpcResponseSerializer.Singleton.Serialize(xmlRpcResponse); | 598 | responseString = XmlRpcResponseSerializer.Singleton.Serialize(xmlRpcResponse); |
599 | response.KeepAlive = m_rpcHandlersKeepAlive[methodName]; | ||
587 | } | 600 | } |
588 | else | 601 | else |
589 | { | 602 | { |