LDAP套接字保持活动状态

问题描述:

我们正在使用OpenLDAP客户端库连接到LDAP服务器。问题是,如果一段时间没有活动,服务器(或中间的防火墙)会丢弃TCP连接。LDAP套接字保持活动状态

我们目前实施的“保持活力”只是不时搜索baseDN--有什么更好的想法?

+0

什么语言是你吗? – Tomalak 2008-11-24 09:18:21

唯一的选择似乎是重新连接:

ldap_set_option(ld, LDAP_OPT_RECONNECT, LDAP_OPT_ON); 

LDAP_OPT_RECONNECT不可用OpenLDAP中

LDAP放弃可能的工作:

if (ldap_abandon(ld, 0, sctrls, cctrls) != LDAP_SUCCESS) 
    { 
     /* handle ldap error */ 
    };

有关于这个的OpenLDAP的一个讨论邮寄名单:

http://www.openldap.org/lists/openldap-devel/200905/msg00008.html

简介: 放弃请求向服务器发送消息,但是服务器不会向客户端发送放弃请求的响应。对于LDAP请求,零不是有效的MSGID。由于零是无效的MSGID,并且服务器没有响应放弃请求,所以理论上服务器将忽略放弃对msgid零的请求。这将在TCP套接字上提供活动,防止防火墙丢弃连接。

参见:

  • RFC 4511第4.11:放弃操作
  • RFC 4511第4.1.1.1:MESSAGEID

http://tools.ietf.org/html/rfc4511