Fix LDAP backend option setting.

Review Request #388 — Created May 15, 2008 and submitted


Review Board SVN (deprecated)


The Python LDAP library (I'm using 2.3.4) assumes the OPT_PROTOCOL_VERSION is an integer.  Due to some bad error handling code, a TypeError is set, but the C extension module does not handle it properly, so in strange situations you'll get a random TypeError raised.  (Look at options.c in the py ldap source near the LDAP_OPT_PROTOCOL_VERSION case statement).

Alternatively, I think this line could be removed, since the python-ldap library seems to default to version 3.
I was still able to log in after the change.  A simple standalone example:

import ldap
LDAP_URI = 'ldap://'
ldapo = ldap.initialize(LDAP_URI)
ldapo.set_option(ldap.OPT_PROTOCOL_VERSION, '3')
import pdb

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: an integer is required

I used "import pdb" as an example to trigger the bug, but it can be just about anything.