名称
ldap_result –
等待LDAP动作返回结果
库
OpenLDAP LDAP
(libldap, -lldap)
概述
#include
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 );
描述
ldap_result()程序用于等待并返回上一次发起的LDAP异步操作程序的结果(比如
ldap_search_ext(3), ldap_modify_ext(3),等).这些程序在发生错误时都返回-1,
如果成功发起这些操作则返回一个援引标识。这个标志是由LDAP库生成并保证在session中是唯一的,它可以通过传递msgid给ldap_result()来获得操作结果。
根据timeout参数,
ldap_result()程序可能阻塞或不阻塞。
如果timeout不是NULL指针,它设定一个最大周期等待选择结束。如果timeout是一个空指针,
ldap_set_option设定的LDAP_OPT_TIMEOUT值将被使用。按照缺省设置,这个操作永远阻塞。 对于轮询操作,
timeout参数应该是一个非空指针, 指向一个被清空的timeval结构。
为获得缺省行为,忽略ldap_set_option(3)设置的值,将timeout参数的tv_sec域设为-1.
参见select(2)获得更多信息。
如果需要得到动作返回,
msgid应该被设置为发起操作时返回的援引标志。否则 提供LDAP_RES_ANY或LDAP_RES_UNSOLICITED
来等待任何或自发的响应。
如果all参数不为0,
ldap_result()将返回所有和msgid关联的响应,否则仅返回下一个响应。通常用这种方式获得搜索操作的所有响应。
一个搜索响应由0个或多个搜索项目构成,0或多个搜索引用,
0或多个扩展的不完全响应后跟一个搜索结果。如果all被设为0, 搜索项目将一次返回一个, 通过多次调用ldap_result().
如果设为1, 搜索响应将在整体中被返回,比如,在所有项目, 所有引用,
所有扩展不完全响应,和最后搜索结果被接收之后。
返回值
如果成功,收到的结果类型将被返回并且result参数包含操作的返回结果;否则,result参数不确定.
result应该被传递给LDAP解释程序, ldap_first_message(3)及同类进行翻译
可能返回的结果类型:
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)
ldap_msgfree()程序用于释放ldap_result()或ldap_search_ext_s(3)及同类分配的结果内存。
它使用一个指向将要释放的结果或结果链作为参数并返回结果链中最后一个消息类型。如果参数是NULL,函数不做任何事情并且返回0。
ldap_msgtype()程序返回消息类型。
ldap_msgid()程序返回消息id。
错误
ldap_result()返回-1如果不好的事发生,或0如果超时。ldap_msgtype()和ldap_msgid()如果发生错误则返回-1.
参见
ldap(3),
ldap_first_message(3), select(2)
致谢
OpenLDAP
Software is developed and maintained by The OpenLDAP
Project
.
OpenLDAP Software is derived from Univer‐
sity of
Michigan LDAP 3.3 Release.
OpenLDAP 2.4.23
2010/06/30 LDAP_RESULT(3)