ldap_result — Wait for the result of an LDAP operation
#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 ); | 
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.
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.
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.
OpenLDAP Software is developed and maintained by The OpenLDAP Project <http://www.openldap.org/>. OpenLDAP Software is derived from University of Michigan LDAP 3.3 Release.