ldap.ENCODING_ERROR when trying to use SimplePageResultsControl
Joel Heenan
Joel.Heenan at Optiver.com.au
Tue Mar 3 05:05:13 CET 2009
I'm trying to use SimplePagedResultsControl so I can pull some data out of Active Directory that has a Server-Limit set. I got most of my code from this guide http://www.novell.com/coolsolutions/tip/18274.html
When I try and run it I get this dump:
"""
SimplePagedResultsControl(1.2.840.113556.1.4.319,True,(10, ''))
Traceback (most recent call last):
File "./test_ldap_brakeit.py", line 29, in ?
msgid = l.search_ext(base, ldap.SCOPE_SUBTREE, 'objectclass=user', serverctrls=[lc])
File "/usr/lib64/python2.4/site-packages/ldap/ldapobject.py", line 468, in search_ext
EncodeControlTuples(serverctrls),
File "/usr/lib64/python2.4/site-packages/ldap/controls.py", line 93, in EncodeControlTuples
result = [
File "/usr/lib64/python2.4/site-packages/ldap/controls.py", line 45, in getEncodedTuple
return (self.controlType,self.criticality,self.encodeControlValue(self.controlValue))
File "/usr/lib64/python2.4/site-packages/ldap/controls.py", line 78, in encodeControlValue
return _ldap.encode_page_control(size,cookie)
ldap.ENCODING_ERROR
"""
Server is RHEL5.2 , not too sure about the Active Directory I think it is running on Windows Server 2003.
Here is the code:
#!/usr/bin/python
#
import ldap,ldap.async,pprint
from ldap.controls import SimplePagedResultsControl
server = 'xxxx.com'
ldap_version = 3
base = 'dc=example,dc=com'
binddn = ''
bindpw = ''
userbase = ''
port = 3268
page_size = 10
l = ldap.open(server,port)
l.protocol_version = ldap_version
l.simple_bind_s(binddn, bindpw)
ldap.set_option(ldap.OPT_REFERRALS, 0)
lc = SimplePagedResultsControl(
ldap.LDAP_CONTROL_PAGE_OID, True, (page_size,'') )
print lc
msgid = l.search_ext(base, ldap.SCOPE_SUBTREE, 'objectclass=user', serverctrls=[lc])
pages = 0
while True:
pages += 1
print "Getting page %d" % (pages,)
rtype,rdata,rmsgid,serverctrls = l.result3(msgid)
print "%d results" % len(rdata)
pctrls = [ c for c in serverctrls if c.controlType == ldap.LDAP_CONTROL_PAGE_OID ]
if pctrls:
est, cookie = pctrls[0].controlValue
if cookie:
lc.controlValue = (page_size,cookie)
msgid = l.search_ext(base, ldap.SCOPE_SUBTREE, 'objectclass=user', serverctrls=[lc])
else:
break
else:
print "Warning: Server ignores RFC 2696 control"
Joel Heenan
________________________________
Information contained in this communication (including any attachments) is confidential and may be privileged or subject to copyright. If you have received this communication in error you are not authorised to use the information in any way and Optiver requests that you notify the sender by return email, destroy all copies and delete the information from your system. Optiver does not represent, warrant or guarantee that this communication is free from computer viruses or other defects or that the integrity of this communication has been maintained. Any views expressed in this communication are those of the individual sender. Optiver does not accept liability for any loss or damage caused directly or indirectly by this communication or its use.
Please consider the environment before printing this email.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ldap/attachments/20090303/2ba93718/attachment.html>
More information about the python-ldap
mailing list