Matthew M. DeLoera wrote:
Hello,

In investigating further, I see the calls in ldapssl_basic_init to PR_Init and PR_SetConcurrency. explaining the extra NSPR threads when running in SSL mode. From further reading about NSPR, I'm starting to get the impression that there's a "proper" usage model for the LDAP SDK. I'd never noticed anything about this in the docs, but if any of you can point me to a relevant section, I'd appreciate it.

Can any of you confirm whether the following usage is ok:

MAIN APP START
    - ldapssl_advclientauth_init()

START THREAD X
    - either call ldapssl_init or ldap_init
    - ldap_simple_bind
    - exit thread X

START THREAD Y
    - execute LDAP queries
    - exit thread Y

START THREAD Z
    - ldap_unbind
    - ldapssl_shutdown (only if I was using SSL)

MAIN APP EXIT
    - do nothing

I am not sure, but some of the initialization and shutdown functions are probably only designed to be called once. I would also recommend calling them on the main (primordial) thread. So a more typical usage pattern would be:

in main at app startup time:
  ldapssl_advclientauth_init()

...
make LDAP calls using on any threads
...

when you program is exiting:
  ldapssl_shutdown();
  PR_Cleanup();

It probably makes sense to ask about your crash on the NSPR list. The LDAP C SDK is using NSPR somewhat indirectly through NSS when SSL is used.

--
Mark Smith
Pearl Crescent
http://pearlcrescent.com/
_______________________________________________
dev-tech-ldap mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-ldap

Reply via email to