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

Re: ldap_search_s



> 
> Why does ldap_search_s take LDAPMessage ** as one of the arguments?
> 
> >From what I see only one LDAPMessage is ever returned.  It a bit confusing
> as LDAPMessage implies that it is a linked list.  Can someone explain to
> me why a doble pointer is necessary?
> 
> Thanks;
> Tom
> 
> 

The return value of ldap_search_s is LDAP_SUCCESS, or an error code.
The LDAP client library allocates memory, needs to return a pointer
to that message.  Since the status of the search is being returned
by the function, the pointer to result message structure must be
returned some other way.  Since what is being returned is an LDAPMessage *,
a pointer to that kind of memory is an LDAPMessage **.

By the way, you must free this when you are finished with it using
ldap_msgfree.

Example of usage would be:

   int resCode;
   LDAPMessage *ldapResultMessage; /* will point to the result */
   .
   .
   resCode = ldap_search_s(.... , &ldapResultMessage);
   if (resCode == LDAP_SUCCESS) {
	.
	.
	ldap_msgfree(ldapResultMessage);
   } else {
	/* print error */
   }


Regards,
Randy