Added a Catch(InvalidOperationException) to BaseHttpServer.HandleRequest(). Which is thrown due to errors in the XML deserializing. Without this catch is it easy to bring down any of the opensim servers on purpose by just sending corrupt xml to them.
parent
5d290cda4a
commit
67c260fdcc
|
@ -340,12 +340,12 @@ namespace OpenSim.Framework.Servers
|
||||||
headervals[headername] = request.Headers[headername];
|
headervals[headername] = request.Headers[headername];
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (headervals.Contains("Host"))
|
// if (headervals.Contains("Host"))
|
||||||
// {
|
// {
|
||||||
// host = (string)headervals["Host"];
|
// host = (string)headervals["Host"];
|
||||||
// }
|
// }
|
||||||
|
|
||||||
keysvals.Add("requestbody",requestBody);
|
keysvals.Add("requestbody", requestBody);
|
||||||
if (keysvals.Contains("method"))
|
if (keysvals.Contains("method"))
|
||||||
{
|
{
|
||||||
//m_log.Warn("[HTTP]: Contains Method");
|
//m_log.Warn("[HTTP]: Contains Method");
|
||||||
|
@ -353,7 +353,7 @@ namespace OpenSim.Framework.Servers
|
||||||
//m_log.Warn("[HTTP]: " + requestBody);
|
//m_log.Warn("[HTTP]: " + requestBody);
|
||||||
|
|
||||||
}
|
}
|
||||||
DoHTTPGruntWork(HTTPRequestHandler.Handle(path,keysvals), response);
|
DoHTTPGruntWork(HTTPRequestHandler.Handle(path, keysvals), response);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -427,10 +427,10 @@ namespace OpenSim.Framework.Servers
|
||||||
default:
|
default:
|
||||||
//m_log.Info("[Debug BASE HTTP SERVER]: in default handler");
|
//m_log.Info("[Debug BASE HTTP SERVER]: in default handler");
|
||||||
// Point of note.. the DoWeHaveA methods check for an EXACT path
|
// Point of note.. the DoWeHaveA methods check for an EXACT path
|
||||||
// if (request.RawUrl.Contains("/CAPS/EQG"))
|
// if (request.RawUrl.Contains("/CAPS/EQG"))
|
||||||
// {
|
// {
|
||||||
// int i = 1;
|
// int i = 1;
|
||||||
// }
|
// }
|
||||||
//m_log.Info("[Debug BASE HTTP SERVER]: Checking for LLSD Handler");
|
//m_log.Info("[Debug BASE HTTP SERVER]: Checking for LLSD Handler");
|
||||||
if (DoWeHaveALLSDHandler(request.RawUrl))
|
if (DoWeHaveALLSDHandler(request.RawUrl))
|
||||||
{
|
{
|
||||||
|
@ -468,6 +468,11 @@ namespace OpenSim.Framework.Servers
|
||||||
{
|
{
|
||||||
m_log.ErrorFormat("[BASE HTTP SERVER]: HandleRequest() threw {0}", e);
|
m_log.ErrorFormat("[BASE HTTP SERVER]: HandleRequest() threw {0}", e);
|
||||||
}
|
}
|
||||||
|
catch (InvalidOperationException e)
|
||||||
|
{
|
||||||
|
m_log.ErrorFormat("[BASE HTTP SERVER]: HandleRequest() threw {0}", e);
|
||||||
|
SendHTML500(response);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool TryGetStreamHandler(string handlerKey, out IRequestHandler streamHandler)
|
private bool TryGetStreamHandler(string handlerKey, out IRequestHandler streamHandler)
|
||||||
|
|
Loading…
Reference in New Issue