diff options
author | Simo Sorce <ssorce@redhat.com> | 2007-08-28 10:46:03 -0400 |
---|---|---|
committer | Simo Sorce <ssorce@redhat.com> | 2007-08-28 10:46:03 -0400 |
commit | 46eeca740ee4d66bfd4f062896220dfb5527f5b6 (patch) | |
tree | b5a91cf249e823ddb9ab01e9797c742caa90de50 /ipa-server/xmlrpc-server/ipaxmlrpc.py | |
parent | 4702eb907585556d83b3373bf06705d83ae3ed2d (diff) | |
parent | 6eea6664e079d187c3b0420b4283af35205d3b03 (diff) | |
download | freeipa.git-46eeca740ee4d66bfd4f062896220dfb5527f5b6.tar.gz freeipa.git-46eeca740ee4d66bfd4f062896220dfb5527f5b6.tar.xz freeipa.git-46eeca740ee4d66bfd4f062896220dfb5527f5b6.zip |
Merge in with upstream
Diffstat (limited to 'ipa-server/xmlrpc-server/ipaxmlrpc.py')
-rw-r--r-- | ipa-server/xmlrpc-server/ipaxmlrpc.py | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/ipa-server/xmlrpc-server/ipaxmlrpc.py b/ipa-server/xmlrpc-server/ipaxmlrpc.py index 3f30f8fb..16ced2cd 100644 --- a/ipa-server/xmlrpc-server/ipaxmlrpc.py +++ b/ipa-server/xmlrpc-server/ipaxmlrpc.py @@ -35,7 +35,8 @@ from mod_python import apache import ipaserver import funcs -from ipa import ipaerror +from ipa import ipaerror, ipautil +import ldap import string import base64 @@ -150,7 +151,12 @@ class ModXMLRPCRequestHandler(object): response = dumps(response, methodresponse=1, allow_none=1) except ipaerror.IPAError, e: self.traceback = True - response = dumps(Fault(e.code, str(e))) + + if (isinstance(e.detail, ldap.LDAPError)): + err = ": %s: %s" % (e.detail.args[0]['desc'], e.detail.args[0].get('info','')) + response = dumps(Fault(e.code, str(e) + err)) + else: + response = dumps(Fault(e.code, str(e))) except: self.traceback = True # report exception back to server @@ -167,14 +173,14 @@ class ModXMLRPCRequestHandler(object): if func is None: raise Fault(1, "Invalid method: %s" % method) - args = list(params) + args = list(ipautil.unwrap_binary_data(params)) for i in range(len(args)): if args[i] == '__NONE__': args[i] = None ret = func(*args) - return ret + return ipautil.wrap_binary_data(ret) def multiCall(self, calls): """Execute a multicall. Execute each method call in the calls list, collecting |