class Excon::Socket
def readline
def readline return legacy_readline if RUBY_VERSION.to_f <= 1.8_7 buffer = String.new begin buffer << @socket.read_nonblock(1) while buffer[-1] != "\n" buffer rescue Errno::EAGAIN, Errno::EWOULDBLOCK, IO::WaitReadable select_with_timeout(@socket, :read) && retry rescue OpenSSL::SSL::SSLError => error if error.message == 'read would block' select_with_timeout(@socket, :read) && retry else raise(error) end end end