setup_body

in lib/puma/client.rb [271:335]


    def setup_body
      @body_read_start = Process.clock_gettime(Process::CLOCK_MONOTONIC, :millisecond)

      if @env[HTTP_EXPECT] == CONTINUE
        
        
        @io << HTTP_11_100
        @io.flush
      end

      @read_header = false

      body = @parser.body

      te = @env[TRANSFER_ENCODING2]

      if te
        if te.include?(",")
          te.split(",").each do |part|
            if CHUNKED.casecmp(part.strip) == 0
              return setup_chunked_body(body)
            end
          end
        elsif CHUNKED.casecmp(te) == 0
          return setup_chunked_body(body)
        end
      end

      @chunked_body = false

      cl = @env[CONTENT_LENGTH]

      unless cl
        @buffer = body.empty? ? nil : body
        @body = EmptyBody
        set_ready
        return true
      end

      remain = cl.to_i - body.bytesize

      if remain <= 0
        @body = StringIO.new(body)
        @buffer = nil
        set_ready
        return true
      end

      if remain > MAX_BODY
        @body = Tempfile.new(Const::PUMA_TMP_BASE)
        @body.binmode
        @tempfile = @body
      else
        
        
        @body = StringIO.new body[0,0]
      end

      @body.write body

      @body_remain = remain

      return false
    end