From 91a2d66dcff932c0bef62658a5f167db40a31adf Mon Sep 17 00:00:00 2001 From: Steve Kemp Date: Thu, 15 Nov 2012 13:41:33 +0000 Subject: Ensure that DNS lookups timeout. --- lib/custodian/alerter.rb | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) (limited to 'lib/custodian/alerter.rb') diff --git a/lib/custodian/alerter.rb b/lib/custodian/alerter.rb index e7befaf..da3571e 100644 --- a/lib/custodian/alerter.rb +++ b/lib/custodian/alerter.rb @@ -52,10 +52,17 @@ class Alerter resolved = target else begin - Socket.getaddrinfo(target, 'echo').each do |a| - resolved = a[3] if ( a ) + timeout( 4 ) do + + begin + Socket.getaddrinfo(target, 'echo').each do |a| + resolved = a[3] if ( a ) + end + rescue SocketError + resolved = nil + end end - rescue SocketError + rescue Timeout::Error => e resolved = nil end end @@ -93,9 +100,15 @@ class Alerter raise ArgumentError, "Address must not be nil" if ( address.nil? ) begin - Resolv.new.getname(address) - rescue - nil + timeout( 4 ) do + begin + Resolv.new.getname(address) + rescue + nil + end + end + rescue Timeout::Error => e + resolved = nil end end -- cgit v1.2.1