Thanks for your reply Mark, I am not sure about whether the prldap library uses NSPR to provide thread safety or not.
However, the LDAP C-SDK is not thread safe & for that purpose we are using the thread callback functions. Thanks, Denish On Tue, Sep 1, 2009 at 7:12 PM, Mark Smith <[email protected]> wrote: > denish patel wrote: > >> Hi once again, >> >> Some more of my observations: >> >> When LDAP_OPT_THREAD_FN_PTRS parameter is set the program goes into a >> loop. >> Debugging more it was found that the get_errno function is invoked by >> nsldapi_send_ber_message (Line No. 402 - request.c). >> >> 402. int terrno = LDAP_GET_ERRNO( ld ); >> 403. if ( NSLDAPI_ERRNO_IO_INPROGRESS( terrno )) { >> 404. if ( async ) { >> 405. rc = -2; >> 406. break; >> 407. } >> 408. } else { >> 409. nsldapi_connection_lost_nolock( ld, sb ); >> 410. rc = -1; /* fatal error */ >> 411. break; >> 412. } >> >> It is from #402 that the get_errno function is invoked. This function >> returns 11 as mentioned in an earlier mail. >> >> The difference between the hanging & the non-hanging program lies here. >> When we do not set LDAP_OPT_THREAD_FN_PTRS, the value I see for terrno is >> 0, >> whereas it's value is 11 when the parameter has been set. >> ... >> > > I am not 100% sure what is causing the problem you are experiencing (it > seems like your errno callback function is not returning the operating > system's errno value). > > I do not think this is well documented, but it is not a good idea to mix > together use of your own thread callback functions and the prldap library > (which is always used when you call the Mozilla LDAP C SDK SSL functions). > Do you really need to install your own thread callback functions? The > prldap library uses NSPR to provide thread safety, and NSPR does a very nice > job of hiding OS differences, etc. > > -- > Mark Smith > Pearl Crescent > http://pearlcrescent.com/ > _______________________________________________ dev-tech-ldap mailing list [email protected] https://lists.mozilla.org/listinfo/dev-tech-ldap
