[Freeipa-devel] [PATCH] Handle LDAP exceptions better
Kevin McCarthy
kmccarth at redhat.com
Mon Aug 27 18:02:54 UTC 2007
Rob Crittenden wrote:
> LDAP exception strings were lost in the conversion to Faults over XML-RPC.
> This includes the LDAP error string within the IPA one.
>
> Als oneed to put a try/except around attempts to determine user uniqueness.
Looks good. There is a funny character in the patch below though:
> # HG changeset patch
> # User rcritten at redhat.com
> # Date 1188236728 14400
> # Node ID e340b4ad049faa1545871d1169c01cc751aa5d8b
> # Parent 655d8fb84fa886a54fd31668c842ebaf685c3c60
> Include any LDAP error strings in XML-RPC Fault exceptions
> Put a try/except around attempts to determine user uniqueness
>
> diff -r 655d8fb84fa8 -r e340b4ad049f ipa-server/xmlrpc-server/funcs.py
> --- a/ipa-server/xmlrpc-server/funcs.py Fri Aug 24 10:31:45 2007 -0700
> +++ b/ipa-server/xmlrpc-server/funcs.py Mon Aug 27 13:45:28 2007 -0400
> @@ -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 -r 655d8fb84fa8 -r e340b4ad049f ipa-server/xmlrpc-server/ipaxmlrpc.py
> --- a/ipa-server/xmlrpc-server/ipaxmlrpc.py Fri Aug 24 10:31:45 2007 -0700
> +++ b/ipa-server/xmlrpc-server/ipaxmlrpc.py Mon Aug 27 13:45:28 2007 -0400
> @@ -36,6 +36,7 @@ import ipaserver
> 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',''))
^^^
probably this was a mistake?
> + 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 2228 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/freeipa-devel/attachments/20070827/cfeb09e3/attachment.bin>
More information about the Freeipa-devel
mailing list