Ruby-ldap timeout

Hello list,

Does anyone know if ruby-ldap supports connection timeouts? We have LDAP
integrated into our authentication system to provide LDAP authentication
as
well. It works fine if you input a valid host/port and if the LDAP
server is
responding ok. However, if the host doesn’t respond for some reason
(could
be an invalid IP), ruby-ldap hangs there waiting forever, hanging the
application, something that obvisouly could cause potential problems
(since
it uses passenger).

Any ideas on how to handle that?

Thanks,

Marcelo.

Hi Marcelo,

If that ldap lib doesn’t include any timeout settings/params for
timing out long-running ldap calls (which if you’re talking about ruby-
net-ldap, it doesn’t at this time), then one way would be to wrap
those potentially-long-running calls in ruby’s timeout (http://ruby-
doc.org/core/classes/Timeout.html) to at least force a timeout on your
app’s side of the process, something like:


TIMEOUT_SECS = 10 # or whatever the max should be.


timeout_status = nil
begin
timeout_status = Timeout::timeout(TIMEOUT_SECS) do
# do stuff that might take too long …
end
rescue Timeout::Error => te
# log it and …
end

Jeff

On Apr 1, 11:18 am, Marcelo de Moraes S. [email protected]

Hi Jeff,

Thanks! Every single day I’m amazed by what’s possible with Ruby, the
more I
learn, the less I know, but I guess that’s good :slight_smile:

This led me to the SystemTimer gem. The Timeout class was failing, I
guess
because it is external call that “cross the barriers”, as explained
here:
http://ph7spot.com/musings/system-timer). SystemTimer works like a charm
:wink:

Cheers,

Marcelo.

Correction. SystemTimer works when binding, but does not work with the
search / search2 method(s). If the LDAP server hangs for any reason,
SystemTimer fails to kill the thread, and even though the Timeout::Error
exception is thrown, it is only after much more time than what you
define in
the timeout_after(time) method.

I’ve tried to contact Philippe, the author regarding this, let’s see how
it
goes. Meanwhile, if anyone has a clue on why it is failing, please
share!

Cheers,

Marcelo.

On Thu, Apr 1, 2010 at 4:09 PM, Marcelo de Moraes S.
<[email protected]

bump

Does anyone have any idea on why it fails?

Marcelo.

On Fri, Apr 2, 2010 at 8:50 PM, Marcelo de Moraes S.
<[email protected]