aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework/Servers/OSHttpXmlRpcHandler.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Framework/Servers/OSHttpXmlRpcHandler.cs')
-rw-r--r--OpenSim/Framework/Servers/OSHttpXmlRpcHandler.cs79
1 files changed, 38 insertions, 41 deletions
diff --git a/OpenSim/Framework/Servers/OSHttpXmlRpcHandler.cs b/OpenSim/Framework/Servers/OSHttpXmlRpcHandler.cs
index f9ce5b1..2c31cfd 100644
--- a/OpenSim/Framework/Servers/OSHttpXmlRpcHandler.cs
+++ b/OpenSim/Framework/Servers/OSHttpXmlRpcHandler.cs
@@ -51,48 +51,42 @@ namespace OpenSim.Framework.Servers
51 /// </summary> 51 /// </summary>
52 /// <returns>true if the handler is interested in the content; 52 /// <returns>true if the handler is interested in the content;
53 /// false otherwise</returns> 53 /// false otherwise</returns>
54 internal override OSHttpContentTypeChecker ContentTypeChecker 54 protected bool XmlRpcMethodMatch(OSHttpRequest req)
55 { 55 {
56 get 56 XmlRpcRequest xmlRpcRequest = null;
57 { 57
58 return delegate(OSHttpRequest req) 58 // check whether req is already reified
59 // if not: reify (and post to whiteboard)
60 try
61 {
62 if (req.Whiteboard.ContainsKey("xmlrequest"))
59 { 63 {
60 XmlRpcRequest xmlRpcRequest = null; 64 xmlRpcRequest = req.Whiteboard["xmlrequest"] as XmlRpcRequest;
61 65 }
62 // check whether req is already reified 66 else
63 // if not: reify (and post to whiteboard) 67 {
64 try 68 StreamReader body = new StreamReader(req.InputStream);
65 { 69 string requestBody = body.ReadToEnd();
66 if (req.Whiteboard.ContainsKey("xmlrequest")) 70 xmlRpcRequest = (XmlRpcRequest)(new XmlRpcRequestDeserializer()).Deserialize(requestBody);
67 { 71 req.Whiteboard["xmlrequest"] = xmlRpcRequest;
68 xmlRpcRequest = req.Whiteboard["xmlrequest"] as XmlRpcRequest; 72 }
69 } 73 }
70 else 74 catch (XmlException)
71 { 75 {
72 StreamReader body = new StreamReader(req.InputStream); 76 _log.ErrorFormat("[OSHttpXmlRpcHandler] failed to deserialize XmlRpcRequest from {0}", req.ToString());
73 string requestBody = body.ReadToEnd(); 77 return false;
74 xmlRpcRequest = (XmlRpcRequest)(new XmlRpcRequestDeserializer()).Deserialize(requestBody);
75 req.Whiteboard["xmlrequest"] = xmlRpcRequest;
76 }
77 }
78 catch (XmlException)
79 {
80 _log.ErrorFormat("[OSHttpXmlRpcHandler] failed to deserialize XmlRpcRequest from {0}", req.ToString());
81 return false;
82 }
83
84 // check against methodName
85 if ((null != xmlRpcRequest)
86 && !String.IsNullOrEmpty(xmlRpcRequest.MethodName)
87 && xmlRpcRequest.MethodName == _methodName)
88 {
89 _log.DebugFormat("[OSHttpXmlRpcHandler] located handler {0} for {1}", _methodName, req.ToString());
90 return true;
91 }
92
93 return false;
94 };
95 } 78 }
79
80 // check against methodName
81 if ((null != xmlRpcRequest)
82 && !String.IsNullOrEmpty(xmlRpcRequest.MethodName)
83 && xmlRpcRequest.MethodName == _methodName)
84 {
85 _log.DebugFormat("[OSHttpXmlRpcHandler] located handler {0} for {1}", _methodName, req.ToString());
86 return true;
87 }
88
89 return false;
96 } 90 }
97 91
98 // contains handler for processing XmlRpc Request 92 // contains handler for processing XmlRpc Request
@@ -149,8 +143,11 @@ namespace OpenSim.Framework.Servers
149 XmlRpcResponse xmlRpcResponse; 143 XmlRpcResponse xmlRpcResponse;
150 string responseString; 144 string responseString;
151 145
146 // check whether we are interested in this request
147 if (!XmlRpcMethodMatch(request)) return OSHttpHandlerResult.Pass;
148
149
152 OSHttpResponse resp = new OSHttpResponse(request); 150 OSHttpResponse resp = new OSHttpResponse(request);
153
154 try 151 try
155 { 152 {
156 // reified XmlRpcRequest must still be on the whiteboard 153 // reified XmlRpcRequest must still be on the whiteboard