# File lib/thin/request.rb, line 68
    def parse(data)
      if @parser.finished?  # Header finished, can only be some more body
        body << data        
      else                  # Parse more header using the super parser
        @data << data
        raise InvalidRequest, 'Header longer than allowed' if @data.size > MAX_HEADER 
        
        @nparsed = @parser.execute(@env, @data, @nparsed)

        # Transfert to a tempfile if body is very big
        move_body_to_tempfile if @parser.finished? && content_length > MAX_BODY
      end
      
      
      if finished?   # Check if header and body are complete
        @data = nil
        @body.rewind
        true         # Request is fully parsed
      else
        false        # Not finished, need more data
      end
    end