summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ipa-server/xmlrpc-server/funcs.py7
-rw-r--r--ipa-server/xmlrpc-server/ipaxmlrpc.py8
2 files changed, 10 insertions, 5 deletions
diff --git a/ipa-server/xmlrpc-server/funcs.py b/ipa-server/xmlrpc-server/funcs.py
index f388f3f4..8994be91 100644
--- a/ipa-server/xmlrpc-server/funcs.py
+++ b/ipa-server/xmlrpc-server/funcs.py
@@ -192,11 +192,10 @@ class IPAServer:
uid = self.__safe_filter(uid)
filter = "(&(uid=%s)(objectclass=posixAccount))" % uid
- entry = self.__get_entry(self.basedn, filter, ['dn','uid'], opts)
-
- if entry is not None:
+ try:
+ entry = self.__get_entry(self.basedn, filter, ['dn','uid'], opts)
return 0
- else:
+ except ipaerror.exception_for(ipaerror.LDAP_NOT_FOUND):
return 1
def get_user_by_uid (self, uid, sattrs=None, opts=None):
diff --git a/ipa-server/xmlrpc-server/ipaxmlrpc.py b/ipa-server/xmlrpc-server/ipaxmlrpc.py
index 3f30f8fb..32a7e808 100644
--- a/ipa-server/xmlrpc-server/ipaxmlrpc.py
+++ b/ipa-server/xmlrpc-server/ipaxmlrpc.py
@@ -36,6 +36,7 @@ from mod_python import apache
import ipaserver
import funcs
from ipa import ipaerror
+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)):
+u 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