代码之家  ›  专栏  ›  技术社区  ›  Dmitry Khalatov

LDAP套接字保持活动

  •  2
  • Dmitry Khalatov  · 技术社区  · 16 年前

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

    我们目前的“保持活力”的实现只是不时地搜索basedn——有更好的想法吗?

    3 回复  |  直到 12 年前
        1
  •  2
  •   David M. Syzdek    13 年前

    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节:消息ID

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

        2
  •  1
  •   Mike Mackintosh    12 年前

    LDAP_OPT_RECONNECT 在OpenLDAP中不可用

        3
  •  0
  •   Mike Mackintosh    12 年前

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

    ldap_set_option( ld, LDAP_OPT_RECONNECT, LDAP_OPT_ON );