From 79caaaa455911f74cba670ca2bbc487453c5895d Mon Sep 17 00:00:00 2001 From: Zach Anker Date: Tue, 31 Mar 2015 09:54:47 -0700 Subject: [PATCH] Make sure we catch WaitWritable for SSL --- lib/http/timeout/global.rb | 4 ++++ lib/http/timeout/per_operation.rb | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/lib/http/timeout/global.rb b/lib/http/timeout/global.rb index 71dd40d4..63e66189 100644 --- a/lib/http/timeout/global.rb +++ b/lib/http/timeout/global.rb @@ -28,6 +28,10 @@ def connect_ssl IO.select([socket], nil, nil, time_left) log_time retry + rescue IO::WaitWritable + IO.select(nil, [socket], nil, time_left) + log_time + retry end end diff --git a/lib/http/timeout/per_operation.rb b/lib/http/timeout/per_operation.rb index 2bd9658d..33fb4b15 100644 --- a/lib/http/timeout/per_operation.rb +++ b/lib/http/timeout/per_operation.rb @@ -31,6 +31,12 @@ def connect_ssl else raise TimeoutError, "Connection timed out after #{connect_timeout} seconds" end + rescue IO::WaitWritable + if IO.select(nil, [socket], nil, connect_timeout) + retry + else + raise TimeoutError, "Connection timed out after #{connect_timeout} seconds" + end end # Read data from the socket