'Run the server forever.'

def start(self):

    self._interrupt = None
    if (self.software is None):
        self.software = ('%s    Server' % self.version)
    if isinstance(self.bind_addr, basestring):
        try:
            os.unlink(self.bind_addr)
        except:
            pass
        try:
            os.chmod(self.bind_addr, 511)
        except:
            pass
        info = [(socket.AF_UNIX, socket.SOCK_STREAM, 0, '', self.bind_addr)]
    else:
        (host, port) = self.bind_addr
        try:
            info = socket.getaddrinfo(host, port, socket.AF_UNSPEC, socket.SOCK_STREAM, 0, socket.AI_PASSIVE)
        except socket.gaierror:
            if (':' in self.bind_addr[0]):
                info = [(socket.AF_INET6, socket.SOCK_STREAM, 0, '', (self.bind_addr + (0, 0)))]
            else:
                info = [(socket.AF_INET, socket.SOCK_STREAM, 0, '', self.bind_addr)]
    self.socket = None
    msg = 'No    socket    could    be    created'
    for res in info:
        (af, socktype, proto, canonname, sa) = res
        try:
            self.bind(af, socktype, proto)
        except socket.error as serr:
            msg = ('%s    --    (%s:    %s)' % (msg, sa, serr))
            if self.socket:
                self.socket.close()
            self.socket = None
            continue
        break
    if (not self.socket):
        raise socket.error(msg)
    self.socket.settimeout(1)
    self.socket.listen(self.request_queue_size)
    self.requests.start()
    self.ready = True
    self._start_time = time.time()
    while self.ready:
        try:
            self.tick()
        except (KeyboardInterrupt, SystemExit):
            raise
        except:
            self.error_log('Error    in    HTTPServer.tick', level=logging.ERROR, traceback=True)
        if self.interrupt:
            while (self.interrupt is True):
                time.sleep(0.1)
            if self.interrupt:
                raise self.interrupt
