From 3eee991935393feeee753ced28c794f12367f19d Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Sat, 19 Jan 2013 02:04:36 +0000 Subject: Explicitly stop PollServiceRequestManager() rather than relying on its destructor. Hopes to address occasional shutdown failures from http://opensimulator.org/mantis/view.php?id=6503 --- OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs | 3 +++ 1 file changed, 3 insertions(+) (limited to 'OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs') diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs index 85b19c0..251a8ad 100644 --- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs @@ -1731,6 +1731,7 @@ namespace OpenSim.Framework.Servers.HttpServer // Long Poll Service Manager with 3 worker threads a 25 second timeout for no events m_PollServiceManager = new PollServiceRequestManager(this, 3, 25000); + m_PollServiceManager.Start(); HTTPDRunning = true; //HttpListenerContext context; @@ -1781,6 +1782,8 @@ namespace OpenSim.Framework.Servers.HttpServer HTTPDRunning = false; try { + m_PollServiceManager.Stop(); + m_httpListener2.ExceptionThrown -= httpServerException; //m_httpListener2.DisconnectHandler = null; -- cgit v1.1 From 1776986dc30d0ed5629da797a3a5c0bcdf4e9f72 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Wed, 23 Jan 2013 08:14:21 -0500 Subject: Add additional return status Adding additional return status for JsonRpcMethod. Now returns true/false --- .../Framework/Servers/HttpServer/BaseHttpServer.cs | 25 +++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) (limited to 'OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs') diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs index 85b19c0..cf1c753 100644 --- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs @@ -1025,7 +1025,8 @@ namespace OpenSim.Framework.Servers.HttpServer return buffer; } - // JsonRpc (v2.0 only) + // JsonRpc (v2.0 only) + // Batch requests not yet supported private byte[] HandleJsonRpcRequests(OSHttpRequest request, OSHttpResponse response) { Stream requestStream = request.InputStream; @@ -1065,8 +1066,26 @@ namespace OpenSim.Framework.Servers.HttpServer { jsonRpcHandlers.TryGetValue(methodname, out method); } - - method(jsonRpcRequest, ref jsonRpcResponse); + bool res = false; + try + { + res = method(jsonRpcRequest, ref jsonRpcResponse); + if(!res) + { + // The handler sent back an unspecified error + if(jsonRpcResponse.Error.Code == 0) + { + jsonRpcResponse.Error.Code = ErrorCode.InternalError; + } + } + } + catch (Exception e) + { + string ErrorMessage = string.Format("[BASE HTTP SERVER]: Json-Rpc Handler Error method {0} - {1}", methodname, e.Message); + m_log.Error(ErrorMessage); + jsonRpcResponse.Error.Code = ErrorCode.InternalError; + jsonRpcResponse.Error.Message = ErrorMessage; + } } else // Error no hanlder defined for requested method { -- cgit v1.1