Вопрос

Мы используем клиентскую библиотеку OpenLDAP для подключения к LDAP-серверу.Проблема в том, что если в течение некоторого времени нет активности, сервер (или брандмауэр посередине) прерывает TCP-соединение.

Наша текущая реализация "keep-alive" просто время от времени выполняет поиск BaseDN - есть идеи получше?

Это было полезно?

Решение 3

Кажется, единственная альтернатива - это повторное соединение:

ldap_set_option( ld, LDAP_OPT_RECONNECT, LDAP_OPT_ON );

Другие советы

Отказ от LDAP может сработать:

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

Об этом было обсуждение в списке рассылки OpenLDAP:

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

Вкратце:Запрос на отмену отправляет сообщение серверу, однако сервер не отправляет ответ клиенту на запросы на отмену.Ноль не является допустимым идентификатором MSGID для запросов LDAP.Поскольку ноль является недопустимым идентификатором MSGID и сервер не отвечает на запросы abandon, теоретически сервер проигнорирует запрос abandon для нулевого идентификатора msgid.Это обеспечило бы активность в TCP-сокете, предотвращая разрыв соединения брандмауэром.

Видишь:

  • RFC 4511, Раздел 4.11:Отказаться от операции
  • RFC 4511, Раздел 4.1.1.1:MessageId - сообщение

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

LDAP_OPT_RECONNECT недоступен в OpenLdap

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top