After inspecting the source files of ldapsearch I encountered that ldap_result() is called with tv.tv_sec = -1. As a result ldap_result() will block forever (poll() is invoked with -1) in some cases.
If for instance the MTU is no big enough (likely in the context of IPv6 and tunnels), the data will not arrive and ldapsearch will 'hang'.
I'd like to ask what was the intention to call ldap_result() with tv.tv_sec = -1 even if a timelimit (option -l) was applied at command line.
thx, Oliver
Oliver Kowalke wrote:
After inspecting the source files of ldapsearch I encountered that ldap_result() is called with tv.tv_sec = -1. As a result ldap_result() will block forever (poll() is invoked with -1) in some cases.
If for instance the MTU is no big enough (likely in the context of IPv6 and tunnels), the data will not arrive and ldapsearch will 'hang'.
I'd like to ask what was the intention to call ldap_result() with tv.tv_sec = -1 even if a timelimit (option -l) was applied at command line.
Use git blame, read the commit logs.
openldap-technical@openldap.org