Add additional return status

Adding additional return status for JsonRpcMethod. Now returns true/false
user_profiles
BlueWall 2013-01-23 08:14:21 -05:00
parent a6afd2f706
commit 1776986dc3
2 changed files with 23 additions and 4 deletions

View File

@ -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
{

View File

@ -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);
}