# Ruby-ldap timeout

**URL:** <https://www.ruby-forum.com/t/ruby-ldap-timeout/186185>\
**Category:** Rails\
**Created:** [April 1, 2010, 8:20pm UTC](https://www.ruby-forum.com/t/ruby-ldap-timeout/186185 "2010-04-01T20:20:53Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![mhfs](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/b2d939/32.png) [@mhfs](https://www.ruby-forum.com/u/mhfs)\
**Post date:** [April 1, 2010, 8:20pm UTC](https://www.ruby-forum.com/t/ruby-ldap-timeout/186185/1 "2010-04-01T20:20:53Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![mhfs](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/b2d939/32.png) [@mhfs](https://www.ruby-forum.com/u/mhfs)\
**Post date:** [April 1, 2010, 9:22pm UTC](https://www.ruby-forum.com/t/ruby-ldap-timeout/186185/2 "2010-04-01T21:22:56Z")

</div>

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](http://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. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![mhfs](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/b2d939/32.png) [@mhfs](https://www.ruby-forum.com/u/mhfs)\
**Post date:** [April 2, 2010, 12:10am UTC](https://www.ruby-forum.com/t/ruby-ldap-timeout/186185/3 "2010-04-02T00:10:56Z")

</div>

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 🙂

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](http://ph7spot.com/musings/system-timer)). SystemTimer works like a charm  
😉

Cheers,

Marcelo.

---

<div class="post-metadata">

**Author:** ![mhfs](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/b2d939/32.png) [@mhfs](https://www.ruby-forum.com/u/mhfs)\
**Post date:** [April 3, 2010, 4:51am UTC](https://www.ruby-forum.com/t/ruby-ldap-timeout/186185/4 "2010-04-03T04:51:46Z")

</div>

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.  
\<removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![mhfs](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/b2d939/32.png) [@mhfs](https://www.ruby-forum.com/u/mhfs)\
**Post date:** [April 5, 2010, 7:28am UTC](https://www.ruby-forum.com/t/ruby-ldap-timeout/186185/5 "2010-04-05T07:28:33Z")

</div>

_bump_

Does anyone have any idea on why it fails?

Marcelo.

On Fri, Apr 2, 2010 at 8:50 PM, Marcelo de Moraes S.  
\<removed\_email\_address@domain.invalid
