From 1776986dc30d0ed5629da797a3a5c0bcdf4e9f72 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Wed, 23 Jan 2013 08:14:21 -0500 Subject: [PATCH] Add additional return status Adding additional return status for JsonRpcMethod. Now returns true/false --- .../Servers/HttpServer/BaseHttpServer.cs | 25 ++++++++++++++++--- .../Servers/HttpServer/JsonRPCMethod.cs | 2 +- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs index 85b19c067e..cf1c753a33 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 7334049ab4..5bab50871f 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); }