- def _dispatch(self, method, params):\r
- try:\r
- return SimpleXMLRPCServer.SimpleXMLRPCDispatcher._dispatch(self, method, params)\r
- except:\r
- # can't use format_exc() as it is not available in jython yet (even\r
- # in trunk).\r
- type, value, tb = sys.exc_info()\r
- raise xmlrpclib.Fault(1,''.join(traceback.format_exception(type, value, tb)))\r
-\r
-##\r
-# taken from the web (XXX find reference). Implents HTTPS xmlrpc request handler\r
-\r
-class SecureXMLRpcRequestHandler(SimpleXMLRPCServer.SimpleXMLRPCRequestHandler):\r
- """Secure XML-RPC request handler class.\r
-\r
- It it very similar to SimpleXMLRPCRequestHandler but it uses HTTPS for transporting XML data.\r
- """\r
- def setup(self):\r
- self.connection = self.request\r
- self.rfile = socket._fileobject(self.request, "rb", self.rbufsize)\r
- self.wfile = socket._fileobject(self.request, "wb", self.wbufsize)\r
-\r
- def do_POST(self):\r
- """Handles the HTTPS POST request.\r
-\r
- It was copied out from SimpleXMLRPCServer.py and modified to shutdown the socket cleanly.\r
- """\r
-\r
- try:\r
- # get arguments\r
- data = self.rfile.read(int(self.headers["content-length"]))\r
- # In previous versions of SimpleXMLRPCServer, _dispatch\r
- # could be overridden in this class, instead of in\r
- # SimpleXMLRPCDispatcher. To maintain backwards compatibility,\r
- # check to see if a subclass implements _dispatch and dispatch\r
- # using that method if present.\r
- response = self.server._marshaled_dispatch(\r
- data, getattr(self, '_dispatch', None)\r
- )\r
- except: # This should only happen if the module is buggy\r
- # internal error, report as HTTP server error\r
- self.send_response(500)\r
-\r
- self.end_headers()\r
- else:\r
- # got a valid XML RPC response\r
- self.send_response(200)\r
- self.send_header("Content-type", "text/xml")\r
- self.send_header("Content-length", str(len(response)))\r
- self.end_headers()\r
- self.wfile.write(response)\r
-\r
- # shut down the connection\r
- self.wfile.flush()\r
- self.connection.shutdown() # Modified here!\r
+ def _dispatch(self, method, params):
+ try:
+ return SimpleXMLRPCServer.SimpleXMLRPCDispatcher._dispatch(self, method, params)
+ except:
+ # can't use format_exc() as it is not available in jython yet
+ # (evein in trunk).
+ type, value, tb = sys.exc_info()
+ raise xmlrpclib.Fault(1,''.join(traceback.format_exception(type, value, tb)))
+
+##
+# taken from the web (XXX find reference). Implents HTTPS xmlrpc request handler
+
+class SecureXMLRpcRequestHandler(SimpleXMLRPCServer.SimpleXMLRPCRequestHandler):
+ """Secure XML-RPC request handler class.
+
+ It it very similar to SimpleXMLRPCRequestHandler but it uses HTTPS for transporting XML data.
+ """
+ def setup(self):
+ self.connection = self.request
+ self.rfile = socket._fileobject(self.request, "rb", self.rbufsize)
+ self.wfile = socket._fileobject(self.request, "wb", self.wbufsize)
+
+ def do_POST(self):
+ """Handles the HTTPS POST request.
+
+ It was copied out from SimpleXMLRPCServer.py and modified to shutdown the socket cleanly.
+ """
+
+ try:
+ # get arguments
+ data = self.rfile.read(int(self.headers["content-length"]))
+ # In previous versions of SimpleXMLRPCServer, _dispatch
+ # could be overridden in this class, instead of in
+ # SimpleXMLRPCDispatcher. To maintain backwards compatibility,
+ # check to see if a subclass implements _dispatch and dispatch
+ # using that method if present.
+ response = self.server._marshaled_dispatch(
+ data, getattr(self, '_dispatch', None)
+ )
+ except: # This should only happen if the module is buggy
+ # internal error, report as HTTP server error
+ self.send_response(500)
+
+ self.end_headers()
+ else:
+ # got a valid XML RPC response
+ self.send_response(200)
+ self.send_header("Content-type", "text/xml")
+ self.send_header("Content-length", str(len(response)))
+ self.end_headers()
+ self.wfile.write(response)
+
+ # shut down the connection
+ self.wfile.flush()
+ self.connection.shutdown() # Modified here!