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