[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: library questions: LDAPMessage, msgid, ...



Paul Jarc writes:
> First, is this the right list for help with the client library?

Yes.

> I'm working on an extension library for GNU Guile using the OpenLDAP
> client library.  So C objects such as LDAP*, LDAPMessage*, and msgid
> (did I miss any?) will be accessible as Scheme objects.

msgid is just a 32-bit integer.

There are also:

struct berval  - strings which may include null bytes,
LDAPControl    - server and client controls,
BerElement*    - used for internal data in ldap_<first/next>_attribute,
                 I don't know if your Scheme implementation will
                 need these,
struct timeval - used for timeout of ldap_search_st() and others.
                 Maybe you'll just use a real number or nil for that.
LDAPAPIInfo    - provide data about the LDAP implementation to caller,
struct ldapmod - data with modifications sent by caller to LDAP.

> I'm wondering about lifetime issues.  Suppose an LDAP* object is
> destroyed with ldap_unbind() while there are still LDAPMessage* and
> msgid objects lying around.  What happens to them?

Nothing.

I don't know if data in an LDAPMessage* may point at data in an LDAP*
though, so perhaps you had better not use the LDAPMessage* (other than
destroying it) after destroying the LDAP*.

> Am I responsible for destroying them first?

You are responsible for destroying them, but I don't think you need to
destroy them _before_ the LDAP* if you don't want to.  Though I prefer
to do it that way myself, it seems cleaner.

> Are they automatically destroyed?

No.

> Also, is there any documentation giving a big-picture view of how a
> query, etc., works at the C level?  The man pages aren't quite as
> illuminating as I'd like.

OpenLDAP/doc/drafts/draft-ietf-ldapext-ldap-c-api-xx.txt
summarizes it.  I don't know if it says more than the manpages.

-- 
Hallvard