* Fixed: Accessing xmlrpc with invalid xml data would crash the sim.
* Ignored some bins and gensafrisby
parent
86e3fc3da2
commit
7adc2212c7
|
@ -35,6 +35,7 @@ using System.Text.RegularExpressions;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using Nwc.XmlRpc;
|
using Nwc.XmlRpc;
|
||||||
using OpenSim.Framework.Console;
|
using OpenSim.Framework.Console;
|
||||||
|
using System.Xml;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Servers
|
namespace OpenSim.Framework.Servers
|
||||||
{
|
{
|
||||||
|
@ -153,31 +154,44 @@ namespace OpenSim.Framework.Servers
|
||||||
reader.Close();
|
reader.Close();
|
||||||
requestStream.Close();
|
requestStream.Close();
|
||||||
|
|
||||||
XmlRpcRequest xmlRprcRequest = (XmlRpcRequest)(new XmlRpcRequestDeserializer()).Deserialize(requestBody);
|
string responseString = String.Empty;
|
||||||
|
XmlRpcRequest xmlRprcRequest = null;
|
||||||
|
|
||||||
string methodName = xmlRprcRequest.MethodName;
|
try
|
||||||
|
|
||||||
XmlRpcResponse xmlRpcResponse;
|
|
||||||
|
|
||||||
XmlRpcMethod method;
|
|
||||||
if (this.m_rpcHandlers.TryGetValue(methodName, out method))
|
|
||||||
{
|
{
|
||||||
xmlRpcResponse = method(xmlRprcRequest);
|
xmlRprcRequest = (XmlRpcRequest)(new XmlRpcRequestDeserializer()).Deserialize(requestBody);
|
||||||
}
|
}
|
||||||
else
|
catch ( XmlException e )
|
||||||
{
|
{
|
||||||
xmlRpcResponse = new XmlRpcResponse();
|
responseString = String.Format( "XmlException:\n{0}",e.Message );
|
||||||
Hashtable unknownMethodError = new Hashtable();
|
}
|
||||||
unknownMethodError["reason"] = "XmlRequest"; ;
|
|
||||||
unknownMethodError["message"] = "Unknown Rpc Request ["+methodName+"]";
|
if (xmlRprcRequest != null)
|
||||||
unknownMethodError["login"] = "false";
|
{
|
||||||
xmlRpcResponse.Value = unknownMethodError;
|
string methodName = xmlRprcRequest.MethodName;
|
||||||
|
|
||||||
|
XmlRpcResponse xmlRpcResponse;
|
||||||
|
|
||||||
|
XmlRpcMethod method;
|
||||||
|
if (this.m_rpcHandlers.TryGetValue(methodName, out method))
|
||||||
|
{
|
||||||
|
xmlRpcResponse = method(xmlRprcRequest);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xmlRpcResponse = new XmlRpcResponse();
|
||||||
|
Hashtable unknownMethodError = new Hashtable();
|
||||||
|
unknownMethodError["reason"] = "XmlRequest"; ;
|
||||||
|
unknownMethodError["message"] = "Unknown Rpc Request [" + methodName + "]";
|
||||||
|
unknownMethodError["login"] = "false";
|
||||||
|
xmlRpcResponse.Value = unknownMethodError;
|
||||||
|
}
|
||||||
|
|
||||||
|
responseString = XmlRpcResponseSerializer.Singleton.Serialize(xmlRpcResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
response.AddHeader("Content-type", "text/xml");
|
response.AddHeader("Content-type", "text/xml");
|
||||||
|
|
||||||
string responseString = XmlRpcResponseSerializer.Singleton.Serialize(xmlRpcResponse);
|
|
||||||
|
|
||||||
byte[] buffer = Encoding.UTF8.GetBytes(responseString);
|
byte[] buffer = Encoding.UTF8.GetBytes(responseString);
|
||||||
|
|
||||||
response.SendChunked = false;
|
response.SendChunked = false;
|
||||||
|
|
Loading…
Reference in New Issue