class Puma::Client

def read_body

def read_body
  if @chunked_body
    return read_chunked_body
  end
  # Read an odd sized chunk so we can read even sized ones
  # after this
  remain = @body_remain
  if remain > CHUNK_SIZE
    want = CHUNK_SIZE
  else
    want = remain
  end
  begin
    chunk = @io.read_nonblock(want, @read_buffer)
  rescue IO::WaitReadable
    return false
  rescue SystemCallError, IOError
    raise ConnectionError, "Connection error detected during read"
  end
  # No chunk means a closed socket
  unless chunk
    @body.close
    @buffer = nil
    set_ready
    raise EOFError
  end
  remain -= @body.write(chunk)
  if remain <= 0
    @body.rewind
    @buffer = nil
    set_ready
    return true
  end
  @body_remain = remain
  false
end