'Retrieve the results from all plugins and put them in our output Queue.'

@task_decorator
def _route_plugin_results(self, function_id, plugin):

    while True:
        try:
            fuzzable_request = plugin.output_queue.get_nowait()
        except Queue.Empty:
            break
        else:
            if (not isinstance(fuzzable_request, FuzzableRequest)):
                msg = 'The    %s    plugin    did    NOT    return    a    FuzzableRequest.'
                ve = ValueError((msg % plugin.get_name()))
                self.handle_exception(plugin.get_type(), plugin.get_name(), fuzzable_request, ve)
            elif self._is_new_fuzzable_request(plugin, fuzzable_request):
                kb.kb.add_fuzzable_request(fuzzable_request)
                self._out_queue.put((plugin.get_name(), None, fuzzable_request))
        finally:
            if self._should_stop_discovery():
                self._running = False
                self._force_end()
                break
