Я пытаюсь понять, как правильно реализовать тайм-аут для запроса привязки OpenLDAP к серверу LDAP. Из того, что я нашел, похоже, есть два способа сделать это: с LDAP_OPT_TIMELIMIT и LDAP_OPT_TIMEOUT. Моя основная путаница связана с попыткой выяснить, в чем разница между ними.
Насколько я понимаю, TIMELIMIT — это стандарт LDAP, который устанавливает ограничение по времени для цикла запроса/ответа для любого поиска ldap. По крайней мере, в Windows значение по умолчанию составляет 120 секунд.
С другой стороны, TIMEOUT специфичен для OpenLDAP и используется исключительно на стороне клиента для тайм-аута запросов на привязку LDAP. Это на самом деле звучит ближе всего к тому, что я хочу реализовать. Из обсуждений я знаю, что использование ldap_set_opt для TIMEOUT не было полностью реализовано до версии 2.4. От Как заставить ldap_simple_bind_s истечь время ожидания? Я знаю, что обходной путь для более ранних версий заключается в использовании асинхронной привязки, за которой следует ldap_result с тайм-аутом и ldap_abandon_ext в случае тайм-аута для отбрасывания запроса. Это имеет смысл, хотя при просмотре исходного кода для синхронного связывания в версии 2.4 кажется, что он никогда не обрабатывает тайм-аут таким образом. Это заставляет меня задаться вопросом, насколько важен вызов ldap_abandon_ext.
Любые ответы или понимание будут оценены.