code: def check_urls (aggregate):
      
      try:
          aggregate.visit_loginurl()
      except Exception as msg:
          log.warn(LOG_CHECK, _("Error using login URL: %(msg)s.") % \
                   dict(msg=msg))
          raise
      try:
          aggregate.logger.start_log_output()
      except Exception as msg:
          log.error(LOG_CHECK, _("Error starting log output: %(msg)s.") % \
              dict(msg=msg))
          raise
      try:
          if not aggregate.urlqueue.empty():
              aggregate.start_threads()
          check_url(aggregate)
          aggregate.finish()
          aggregate.end_log_output()
      except LinkCheckerInterrupt:
          raise
      except KeyboardInterrupt:
          interrupt(aggregate)
      except thread.error:
          log.warn(LOG_CHECK,
               _("Could not start a new thread. Check that the current user" \
                 " is allowed to start new threads."))
          abort(aggregate)
      except Exception:
          # Catching "Exception" is intentionally done. This saves the program
          # from libraries that raise all kinds of strange exceptions.
          console.internal_error()
          aggregate.logger.log_internal_error()
          abort(aggregate)
docs: Main check function; checks all configured URLs until interrupted
      with Ctrl-C.
      @return: None