'Tests an URL for ReDoS vulnerabilities using time delays.
:param freq: A FuzzableRequest'

def audit(self, freq, orig_response):

    if self.ignore_this_request(freq):
        return
    fake_mutants = create_mutants(freq, [''])
    for mutant in fake_mutants:
        for delay_obj in self.get_delays():
            adc = AproxDelayController(mutant, delay_obj, self._uri_opener, delay_setting=EXPONENTIALLY)
            (success, responses) = adc.delay_is_controlled()
            if (not success):
                continue
            desc = ('ReDoS    was    found    at:    %s' % mutant.found_at())
            response_ids = [r.id for r in responses]
            v = Vuln.from_mutant('ReDoS    vulnerability', desc, severity.MEDIUM, response_ids, self.get_name(), mutant)
            self.kb_append_uniq(self, 'redos', v)
            break
