diff --git a/jsonrpclib/jsonrpc.py b/jsonrpclib/jsonrpc.py index e11939a..0208e20 100644 --- a/jsonrpclib/jsonrpc.py +++ b/jsonrpclib/jsonrpc.py @@ -421,7 +421,7 @@ def request(self, method, params=[]): if not self.id: self.id = random_id() request = { 'id':self.id, 'method':method } - if params: + if params or self.version < 1.1: request['params'] = params if self.version >= 2: request['jsonrpc'] = str(self.version) @@ -524,9 +524,15 @@ def check_for_errors(result): if 'result' not in result.keys() and 'error' not in result.keys(): raise ValueError('Response does not have a result or error key.') if 'error' in result.keys() and result['error'] != None: - code = result['error']['code'] - message = result['error']['message'] - raise ProtocolError((code, message)) + if 'code' in result['error'] and 'message' in result['error']: + code = result['error']['code'] + message = result['error']['message'] + raise ProtocolError((code, message)) + elif type(result['error']) is dict and len(result['error']) == 1: + error_key = result['error'].keys()[0] + raise ProtocolError(result['error'][error_key]) + else: + raise ProtocolError(result['error']) return result def isbatch(result):