if an xml rpc method throws an exception, log as an error to the console as well as returning the exception to the caller

mysql-performance
Justin Clark-Casey (justincc) 2009-12-03 17:57:29 +00:00
parent d9a20edfb0
commit 504bfd87d5
2 changed files with 12 additions and 3 deletions

View File

@ -723,13 +723,21 @@ namespace OpenSim.Framework.Servers.HttpServer
xmlRpcResponse = method(xmlRprcRequest, request.RemoteIPEndPoint); xmlRpcResponse = method(xmlRprcRequest, request.RemoteIPEndPoint);
} }
catch(Exception e) catch(Exception e)
{ {
string errorMessage
= String.Format(
"Requested method [{0}] from {1} threw exception: {2} {3}",
methodName, request.RemoteIPEndPoint.Address, e.Message, e.StackTrace);
m_log.ErrorFormat("[BASE HTTP SERVER]: {0}", errorMessage);
// if the registered XmlRpc method threw an exception, we pass a fault-code along // if the registered XmlRpc method threw an exception, we pass a fault-code along
xmlRpcResponse = new XmlRpcResponse(); xmlRpcResponse = new XmlRpcResponse();
// Code probably set in accordance with http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php // Code probably set in accordance with http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php
xmlRpcResponse.SetFault(-32603, String.Format("Requested method [{0}] threw exception: {1}", xmlRpcResponse.SetFault(-32603, errorMessage);
methodName, e.Message));
} }
// if the method wasn't found, we can't determine KeepAlive state anyway, so lets do it only here // if the method wasn't found, we can't determine KeepAlive state anyway, so lets do it only here
response.KeepAlive = m_rpcHandlersKeepAlive[methodName]; response.KeepAlive = m_rpcHandlersKeepAlive[methodName];
} }

View File

@ -201,6 +201,7 @@ namespace OpenSim.Grid.UserServer.Modules
} }
return response; return response;
} }
public XmlRpcResponse XmlRPCUserMovedtoRegion(XmlRpcRequest request, IPEndPoint remoteClient) public XmlRpcResponse XmlRPCUserMovedtoRegion(XmlRpcRequest request, IPEndPoint remoteClient)
{ {
XmlRpcResponse response = new XmlRpcResponse(); XmlRpcResponse response = new XmlRpcResponse();