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 LDAP Referrals when LDAP_OPT_REFERRALS=ON (which means SDK will handle Referrals internally)


While testing our application which makes use of OpenLDAP sdk , we see a difference in the referral handling when LDAP_OPT_REFERRALS=ON when compared with NSLDAP C SDK with user bind
We are testing with Oracle Unified Directory, referrals is enabled at server.

With OpenLDAP C SDK:
When our application follows the bind(synchronous) request for the users which is present in another server (where chase should happen)
    ldap_bind_s →
       - Which internally calls ldap_sasl_bind_s → ldap_sasl_bind + ldap_result
 
     able to succeed the bind (LDAP_SUCCESS).
 
And When our application follows the bind(asynchronous) request for the users which is present in another server (where chase should happen)
    ldap_simple_bind ->
        - which internally calls ldap_sasl_bind

    failed to bind and returned (LDAP_REFERRAL) instead.
   

On further analysis of OpenLDAP code result.c (line# 728)  we observed, there is exclusion for bind request tag != LDAP_RES_BIND, which is preventing to chase the referral internally.


    /* Do we need to check for referrals? */
            if ( tag != LDAP_RES_BIND &&
                ( LDAP_BOOL_GET(&ld->ld_options, LDAP_BOOL_REFERRALS) ||
                    lr->lr_parent != NULL ))
            {
                char        **refs = NULL;
                ber_len_t   len;
                /* Check if V3 referral */
                if ( ber_peek_tag( &tmpber, &len ) == LDAP_TAG_REFERRAL ) {
                    ...
                    /* Chase the referral */
                    refer_cnt = ldap_chase_v3referrals( ld, lr, refs, ... );

                   
                   

However, we don't see such exclusion with NSLDAP C SDK specifically for bind requests. We would like to understand the limitation for asynchronous bind when handling referral internally.
Are there any known issues/limitations with this use case when OpenLDAP C SDK handles referrals?
Is there any way (like any flag/option) to make automatic referrals work with asynchronous bind calls  ldap_simple_bind?

Please note that, the ldap_search succeeds with when LDAP_OPT_REFERRALS=ON, no issue observed.