LDAP套接字保持活动状态

时间:2008-11-24 07:07:16

标签: networking tcp ldap openldap keep-alive

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

我们目前实施的“keep-alive”只会不时搜索baseDN - 任何更好的想法?

3 个答案:

答案 0 :(得分:2)

LDAP Abandon可能有效:

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

答案 1 :(得分:1)

LDAP_OPT_RECONNECT在OpenLdap

中不可用

答案 2 :(得分:0)

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

ldap_set_option( ld, LDAP_OPT_RECONNECT, LDAP_OPT_ON );