From 9b80b358f33af05bf9fea7ca6b4bedcd0ac58484 Mon Sep 17 00:00:00 2001 From: Latif Khalifa Date: Sat, 31 Mar 2012 02:20:39 +0000 Subject: [PATCH] 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 --- Programs/WinGridProxy/ProxyManager.cs | 34 +++++++++++++++------------ 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/Programs/WinGridProxy/ProxyManager.cs b/Programs/WinGridProxy/ProxyManager.cs index a1039d92..d1c20f8f 100644 --- a/Programs/WinGridProxy/ProxyManager.cs +++ b/Programs/WinGridProxy/ProxyManager.cs @@ -171,26 +171,30 @@ namespace WinGridProxy /// 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); + } } } }