2

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

我们当前的“keep-alive”实现只是不时搜索baseDN - 有更好的想法吗?

4

3 回答 3

2

LDAP_OPT_RECONNECT在 OpenLdap 中不可用

于 2010-04-07T11:12:19.013 回答
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 节:消息 ID

https://www.rfc-editor.org/rfc/rfc4511

于 2011-10-04T17:06:00.697 回答
0

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

ldap_set_option( ld, LDAP_OPT_RECONNECT, LDAP_OPT_ON );
于 2008-12-02T20:39:54.590 回答