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 +++++++++++++++++++--- .../Framework/Servers/HttpServer/JsonRPCMethod.cs | 2 +- 2 files changed, 23 insertions(+), 4 deletions(-) (limited to 'OpenSim/Framework/Servers') 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 { diff --git a/OpenSim/Framework/Servers/HttpServer/JsonRPCMethod.cs b/OpenSim/Framework/Servers/HttpServer/JsonRPCMethod.cs index 7334049..5bab508 100644 --- a/OpenSim/Framework/Servers/HttpServer/JsonRPCMethod.cs +++ b/OpenSim/Framework/Servers/HttpServer/JsonRPCMethod.cs @@ -30,5 +30,5 @@ using OpenMetaverse.StructuredData; namespace OpenSim.Framework.Servers.HttpServer { - public delegate void JsonRPCMethod(OSDMap jsonRpcRequest, ref JsonRpcResponse response); + public delegate bool JsonRPCMethod(OSDMap jsonRpcRequest, ref JsonRpcResponse response); } -- cgit v1.1