in lib/puma/minissl.rb [49:82]
def read_nonblock(size, *_)
while true
output = engine_read_all
return output if output
data = @socket.read_nonblock(size, exception: false)
if data == :wait_readable || data == :wait_writable
raise IO::EAGAINWaitReadable
elsif data.nil?
return nil
end
@engine.inject(data)
output = engine_read_all
return output if output
while neg_data = @engine.extract
@socket.write neg_data
end
end
end