Hi Team,

We are working on migration of nsldap C sdk to OpenLDAP C sdk for our
application client code.

We are using OpenLDAP 2.6.7.

As part of this migration, we are facing one issue related to timeouts,
that we set LDAP Handle using ldap_set_option and calling an API
ldap_search_ext_s.

With Mozilla NSLDAP, setting PRLDAP_OPT_IO_MAX_TIMEOUT value to zero in
LDAP Handle and making ldap_search_ext_s function call. Also passing
timeout value (for Ex: 30 seconds) explicitly as one on the argument. This
search call is giving an error: "Timeout error."


With OpenLDAP, setting LDAP_OPT_TIMEOUT value to zero in LDAP Handle and
making ldap_search_ext_s function call. Also passing timeout value (Same
value: 30 seconds) explicitly as one of the arguments. This search call is
giving a successful result instead of Timeout error.

*Note:* With OpenLDAP, setting  LDAP_OPT_TIMEOUT  value to zero in LDAP
Handle (0 sec, 1 microseconds) and making ldap_search_ext_s function call.
Also passing timeout value 30 seconds explicitly as one of the arguments.
This search call is giving a successful result instead of Timeout error.

*Even tried this: *With OpenLDAP, setting LDAP_OPT_NETWORK_TIMEOUT value to
zero in LDAP Handle (0 sec, 1 microseconds) and making ldap_search_ext_s
function call. Also passing timeout value 30 seconds explicitly as one of
the arguments. This search call is giving a successful result instead of
Timeout error.  --Here, I think LDAP_OPT_NETWORK_TIMEOUT is applicable only
for connection calls.

As per our application expected behaviour, with OpenLDAP, search call
should give a timeout error, but it is giving a successful result.


1. What is the difference between the implementation of nsldap and OpenLDAP
for timeouts?

2. If we want to get a Timeout error in the above use case (setting
LDAP_OPT_TIMEOUT to zero) , what should we change with usage of OpenLDAP
timeouts and APIs?

3. Also provide me some details on how timeouts are applied for each
operation like connect/bind/search calls?

4. Which timeout will take the precedence/consideration when we have
different timeouts, one is in LDAP Handle LDAP_OPT_TIMEOUT  and another
timeout value that we pass explicitly to ldap_searh_ext_s API?

  a. What happens when we have LDAP_OPT_TIMEOUT  (ldo_tm_api in LDAP
Handle) has less value than the timeout value specified
in ldap_search_ext_s API argument explicitly?

b. What happens when we have LDAP_OPT_TIMEOUT  (ldo_tm_api in LDAP Handle)
has greater value than the timeout value specified in ldap_search_ext_s API
argument explicitly?

5. How do these timeouts apply to other API calls ldap_smple_bind_s?

6. Also, can you provide an equivalent timeout in OpenLDAP for Mozilla
NSLDAP timeouts?

LDAP_X_OPT_CONNECT_TIMEOUT -  ( We mapped LDAP_OPT_NETWORK_TIMEOUT in
OpenLDA)

PRLDAP_OPT_IO_MAX_TIMEOUT - (We mapped LDAP_OPT_TIMEOUT in OpenLDAP)


-- 
Thanks,
*c.venugopal*

Reply via email to