# HG changeset patch # User Alexis S. L. Carvalho # Date 2007-03-19 22:07:38 # Node ID bd46b83b9692809e1cee1bf40f620a95764b86e4 # Parent a80502f475526bd598bd70bc37c3d499ad335024 avoid wsgiapplication <-> MercurialHTTPServer circular reference diff --git a/mercurial/hgweb/server.py b/mercurial/hgweb/server.py --- a/mercurial/hgweb/server.py +++ b/mercurial/hgweb/server.py @@ -206,12 +206,17 @@ def create_server(ui, repo): BaseHTTPServer.HTTPServer.__init__(self, *args, **kargs) self.accesslog = accesslog self.errorlog = errorlog - self.repo = repo - self.webdir_conf = webdir_conf - self.webdirmaker = hgwebdir - self.repoviewmaker = hgweb - self.reqmaker = wsgiapplication(self.make_handler) self.daemon_threads = True + def make_handler(): + if webdir_conf: + hgwebobj = hgwebdir(webdir_conf, ui) + elif repo is not None: + hgwebobj = hgweb(hg.repository(repo.ui, repo.root)) + else: + raise hg.RepoError(_("There is no Mercurial repository here" + " (.hg not found)")) + return hgwebobj + self.reqmaker = wsgiapplication(make_handler) addr, port = self.socket.getsockname()[:2] if addr in ('0.0.0.0', '::'): @@ -223,17 +228,6 @@ def create_server(ui, repo): pass self.addr, self.port = addr, port - def make_handler(self): - if self.webdir_conf: - hgwebobj = self.webdirmaker(self.webdir_conf, ui) - elif self.repo is not None: - hgwebobj = self.repoviewmaker(hg.repository(repo.ui, - repo.root)) - else: - raise hg.RepoError(_("There is no Mercurial repository here" - " (.hg not found)")) - return hgwebobj - class IPv6HTTPServer(MercurialHTTPServer): address_family = getattr(socket, 'AF_INET6', None)