LIBOMV-939: Gridproxy invalid cast exception on misformatted CAPS

Additional patch by Dahlia

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3604 52acb1d6-8a22-11de-b505-999d5b087335
This commit is contained in:
Latif Khalifa
2012-03-31 02:20:39 +00:00
parent 4260a321ac
commit 9b80b358f3

View File

@@ -171,26 +171,30 @@ namespace WinGridProxy
/// <returns></returns>
private bool EventQueueGetHandler(CapsRequest req, CapsStage stage)
{
if (stage == CapsStage.Response)
if (stage == CapsStage.Response && req.Response is OSDMap)
{
OSDMap map = (OSDMap)req.Response;
OSDArray eventsArray = (OSDArray)map["events"];
for (int i = 0; i < eventsArray.Count; i++)
if (map.ContainsKey("events"))
{
OSDMap bodyMap = (OSDMap)eventsArray[i];
if (OnEventMessageLog != null)
{
CapInfo capInfo = new CapInfo(req.Info.URI, req.Info.Sim, bodyMap["message"].AsString());
CapsRequest capReq = new CapsRequest(capInfo);
capReq.RequestHeaders = req.RequestHeaders;
capReq.ResponseHeaders = req.ResponseHeaders;
capReq.Request = null;// req.Request;
capReq.RawRequest = null;// req.RawRequest;
capReq.RawResponse = OSDParser.SerializeLLSDXmlBytes(bodyMap);
capReq.Response = bodyMap;
OSDArray eventsArray = (OSDArray)map["events"];
OnEventMessageLog(capReq, CapsStage.Response);
for (int i = 0; i < eventsArray.Count; i++)
{
OSDMap bodyMap = (OSDMap)eventsArray[i];
if (OnEventMessageLog != null)
{
CapInfo capInfo = new CapInfo(req.Info.URI, req.Info.Sim, bodyMap["message"].AsString());
CapsRequest capReq = new CapsRequest(capInfo);
capReq.RequestHeaders = req.RequestHeaders;
capReq.ResponseHeaders = req.ResponseHeaders;
capReq.Request = null;// req.Request;
capReq.RawRequest = null;// req.RawRequest;
capReq.RawResponse = OSDParser.SerializeLLSDXmlBytes(bodyMap);
capReq.Response = bodyMap;
OnEventMessageLog(capReq, CapsStage.Response);
}
}
}
}