mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
Trap bad return values from Xen-API method handlers, and return an internal
error. Signed-off-by: Ewan Mellor <ewan@xensource.com>
This commit is contained in:
1 parent
efcaa9d8d3
commit
3c924c8c4c
1 file changed
+12
@@ -200,6 +200,18 @@ class TCPXMLRPCServer(SocketServer.ThreadingMixIn, SimpleXMLRPCServer):
|
||||
else:
|
||||
response = self._dispatch(method, params)
|
||||
|
||||
if self.xenapi and \
|
||||
(response is None or
|
||||
not isinstance(response, dict) or
|
||||
'Status' not in response):
|
||||
log.exception('Internal error handling %s: Invalid result %s',
|
||||
method, response)
|
||||
response = { "Status": "Failure",
|
||||
"ErrorDescription":
|
||||
['INTERNAL_ERROR',
|
||||
'Invalid result %s handling %s' %
|
||||
(response, method)]}
|
||||
|
||||
# With either Unicode or normal strings, we can only transmit
|
||||
# \t, \n, \r, \u0020-\ud7ff, \ue000-\ufffd, and \u10000-\u10ffff
|
||||
# in an XML document. xmlrpclib does not escape these values
|
||||
|
||||