1
0
Fork 0
mirror of https://github.com/teamcapybara/capybara.git synced 2022-11-09 12:08:07 -05:00
teamcapybara--capybara/lib/capybara/registrations/patches/puma_ssl.rb
2020-09-05 12:24:43 -07:00

29 lines
654 B
Ruby

# frozen_string_literal: true
module Puma
module MiniSSL
class Socket
def read_nonblock(size, *_)
wait_states = %i[wait_readable wait_writable]
loop do
output = engine_read_all
return output if output
data = @socket.read_nonblock(size, exception: false)
raise IO::EAGAINWaitReadable if wait_states.include? data
return nil if data.nil?
@engine.inject(data)
output = engine_read_all
return output if output
while (neg_data = @engine.extract)
@socket.write neg_data
end
end
end
end
end
end