'Create the first fuzzable request objects based on the targets and put
them in the output Queue.
This will start the whole discovery process, since plugins are going
to consume from that Queue and then put their results in it again in
order to continue discovering.'

def seed_output_queue(self, target_urls):

    in_scope = (lambda fr: (fr.get_url().get_domain() == url.get_domain()))
    for url in target_urls:
        try:
            response = self._w3af_core.uri_opener.GET(url, cache=True)
        except ScanMustStopException as w3:
            om.out.error('The    target    server    is    unreachable.    Stopping.')
            raise w3
        except HTTPRequestException as hre:
            msg = 'The    target    URL:    "%s"    is    unreachable.    Exception:    "%s".'
            om.out.error((msg % (url, hre)))
        except Exception as e:
            msg = 'The    target    URL:    "%s"    is    unreachable    because    of    an    unhandled    exception.    Error    description:    "%s".    See    debug    output    for    more    information.\nTraceback    for    this    error:\n%s'
            om.out.error((msg % (url, e, traceback.format_exc())))
        else:
            _seed = FuzzableRequest(response.get_uri())
            if in_scope(_seed):
                self._out_queue.put((None, None, _seed))
                kb.kb.add_fuzzable_request(_seed)
    self._out_queue.put(POISON_PILL)
