mirror of
https://github.com/teamcapybara/capybara.git
synced 2022-11-09 12:08:07 -05:00
29 lines
654 B
Ruby
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
|