diff --git a/trytond/trytond/protocols/jsonrpc.py b/trytond/trytond/protocols/jsonrpc.py index 50b35a7f34..5e68ede280 100644 --- a/trytond/trytond/protocols/jsonrpc.py +++ b/trytond/trytond/protocols/jsonrpc.py @@ -132,18 +132,24 @@ class JSONRequest(Request): object_hook=JSONDecoder()) except HTTPException: raise - except Exception: - raise BadRequest('Unable to read JSON request') + except Exception as e: + raise BadRequest('Unable to read JSON request') from e else: raise BadRequest('Not a JSON request') @cached_property def rpc_method(self): - return self.parsed_data['method'] + try: + return self.parsed_data['method'] or '' + except Exception as e: + raise BadRequest("Unable to get RPC method") from e @cached_property def rpc_params(self): - return self.parsed_data['params'] + try: + return self.parsed_data['params'] or [] + except Exception as e: + raise BadRequest("Unable to get RPC params") from e class JSONProtocol: diff --git a/trytond/trytond/protocols/xmlrpc.py b/trytond/trytond/protocols/xmlrpc.py index 9e571a103d..bceded3c16 100644 --- a/trytond/trytond/protocols/xmlrpc.py +++ b/trytond/trytond/protocols/xmlrpc.py @@ -146,11 +146,17 @@ class XMLRequest(Request): @property def rpc_method(self): - return self.parsed_data[1] + try: + return self.parsed_data[1] or '' + except Exception as e: + raise BadRequest("Unable to get RPC method") from e @property def rpc_params(self): - return self.parsed_data[0] + try: + return self.parsed_data[0] or [] + except Exception as e: + raise BadRequest("Unable to get RPC params") from e class XMLProtocol: