class Net::BufferedIO
def rbuf_fill
def rbuf_fill tmp = @rbuf.empty? ? @rbuf : nil case rv = @io.read_nonblock(BUFSIZE, tmp, exception: false) when String return if rv.equal?(tmp) @rbuf << rv rv.clear return when :wait_readable (io = @io.to_io).wait_readable(@read_timeout) or raise Net::ReadTimeout.new(io) # continue looping when :wait_writable # OpenSSL::Buffering#read_nonblock may fail with IO::WaitWritable. # http://www.openssl.org/support/faq.html#PROG10 (io = @io.to_io).wait_writable(@read_timeout) or raise Net::ReadTimeout.new(io) # continue looping when nil raise EOFError, 'end of file reached' end while true end