# ldap_result

## NAME



           ldap_result - Wait for the result of an LDAP operation
    


## LIBRARY



           OpenLDAP LDAP (libldap, -lldap)
    


## SYNOPSIS



           **#include <ldap.h>**
    
           **int ldap_result( LDAP *ld, int msgid, int all,**
                **struct timeval *timeout, LDAPMessage **result );**
    
           **int ldap_msgfree( LDAPMessage *msg );**
    
           **int ldap_msgtype( LDAPMessage *msg );**
    
           **int ldap_msgid( LDAPMessage *msg );**
    


## DESCRIPTION



           The **ldap_result()** routine is used to wait for and return the
           result of an operation previously initiated by one of the LDAP
           asynchronous operation routines (e.g., ldap_search_ext(3),
           ldap_modify_ext(3), etc.).  Those routines all return -1 in case
           of error, and an invocation identifier upon successful initiation
           of the operation. The invocation identifier is picked by the
           library and is guaranteed to be unique across the LDAP session.
           It can be used to request the result of a specific operation from
           **ldap_result()** through the _msgid_ parameter.
    
           The **ldap_result()** routine will block or not, depending upon the
           setting of the _timeout_ parameter.  If timeout is not a NULL
           pointer,  it  specifies  a  maximum interval  to wait for the
           selection to complete.  If timeout is a NULL  pointer, the
           LDAP_OPT_TIMEOUT value set by ldap_set_option(3) is used. With the
           default setting, the  select  blocks  indefinitely.   To effect  a
           poll,  the  timeout argument should be a non-NULL pointer,
           pointing to a zero-valued timeval structure.  To obtain the
           behavior of the default setting, bypassing any value set by
           ldap_set_option(3), set to -1 the _tv_sec_ field of the _timeout_
           parameter.  See select(2) for further details.
    
           If the result of a specific operation is required, _msgid_ should be
           set to the invocation identifier returned when the operation was
           initiated, otherwise LDAP_RES_ANY or LDAP_RES_UNSOLICITED should
           be supplied to wait for any or unsolicited response.
    
           The _all_ parameter, if non-zero, causes **ldap_result()** to return all
           responses with msgid, otherwise only the next response is
           returned.  This is commonly used to obtain all the responses of a
           search operation.
    
           A search response is made up of zero or more search entries, zero
           or more search references, and zero or more extended partial
           responses followed by a search result.  If _all_ is set to 0, search
           entries will be returned one at a time as they come in, via
           separate calls to **ldap_result()**.  If it's set to 1, the search
           response will only be returned in its entirety, i.e., after all
           entries, all references, all extended partial responses, and the
           final search result have been received.
    


## RETURN VALUE



           Upon success, the type of the result received is returned and the
           _result_ parameter will contain the result of the operation;
           otherwise, the _result_ parameter is undefined.  This result should
           be passed to the LDAP parsing routines, ldap_first_message(3) and
           friends, for interpretation.
    
           The possible result types returned are:
    
                LDAP_RES_BIND (0x61)
                LDAP_RES_SEARCH_ENTRY (0x64)
                LDAP_RES_SEARCH_REFERENCE (0x73)
                LDAP_RES_SEARCH_RESULT (0x65)
                LDAP_RES_MODIFY (0x67)
                LDAP_RES_ADD (0x69)
                LDAP_RES_DELETE (0x6b)
                LDAP_RES_MODDN (0x6d)
                LDAP_RES_COMPARE (0x6f)
                LDAP_RES_EXTENDED (0x78)
                LDAP_RES_INTERMEDIATE (0x79)
    
           The **ldap_msgfree()** routine is used to free the memory allocated
           for result(s) by **ldap_result()** or ldap_search_ext_s(3) and
           friends.  It takes a pointer to the result or result chain to be
           freed and returns the type of the last message in the chain.  If
           the parameter is NULL, the function does nothing and returns zero.
    
           The **ldap_msgtype()** routine returns the type of a message.
    
           The **ldap_msgid()** routine returns the message id of a message.
    


## ERRORS



           **ldap_result()** returns -1 if something bad happens, and zero if the
           timeout specified was exceeded.  **ldap_msgtype()** and **ldap_msgid()**
           return -1 on error.
    


## ACKNOWLEDGEMENTS



           **OpenLDAP Software** is developed and maintained by The OpenLDAP
           Project <http://www.openldap.org/>.  **OpenLDAP Software** is derived
           from the University of Michigan LDAP 3.3 Release.
    


* * *