mercurial/hgweb/server.py
changeset 4247 bd46b83b9692
parent 4130 178007785be8
child 4250 ca639faa38a2
child 4387 80d3f6f0d8e5
equal deleted inserted replaced
4246:a80502f47552 4247:bd46b83b9692
   204     
   204     
   205         def __init__(self, *args, **kargs):
   205         def __init__(self, *args, **kargs):
   206             BaseHTTPServer.HTTPServer.__init__(self, *args, **kargs)
   206             BaseHTTPServer.HTTPServer.__init__(self, *args, **kargs)
   207             self.accesslog = accesslog
   207             self.accesslog = accesslog
   208             self.errorlog = errorlog
   208             self.errorlog = errorlog
   209             self.repo = repo
       
   210             self.webdir_conf = webdir_conf
       
   211             self.webdirmaker = hgwebdir
       
   212             self.repoviewmaker = hgweb
       
   213             self.reqmaker = wsgiapplication(self.make_handler)
       
   214             self.daemon_threads = True
   209             self.daemon_threads = True
       
   210             def make_handler():
       
   211                 if webdir_conf:
       
   212                     hgwebobj = hgwebdir(webdir_conf, ui)
       
   213                 elif repo is not None:
       
   214                     hgwebobj = hgweb(hg.repository(repo.ui, repo.root))
       
   215                 else:
       
   216                     raise hg.RepoError(_("There is no Mercurial repository here"
       
   217                                          " (.hg not found)"))
       
   218                 return hgwebobj
       
   219             self.reqmaker = wsgiapplication(make_handler)
   215 
   220 
   216             addr, port = self.socket.getsockname()[:2]
   221             addr, port = self.socket.getsockname()[:2]
   217             if addr in ('0.0.0.0', '::'):
   222             if addr in ('0.0.0.0', '::'):
   218                 addr = socket.gethostname()
   223                 addr = socket.gethostname()
   219             else:
   224             else:
   221                     addr = socket.gethostbyaddr(addr)[0]
   226                     addr = socket.gethostbyaddr(addr)[0]
   222                 except socket.error:
   227                 except socket.error:
   223                     pass
   228                     pass
   224             self.addr, self.port = addr, port
   229             self.addr, self.port = addr, port
   225 
   230 
   226         def make_handler(self):
       
   227             if self.webdir_conf:
       
   228                 hgwebobj = self.webdirmaker(self.webdir_conf, ui)
       
   229             elif self.repo is not None:
       
   230                 hgwebobj = self.repoviewmaker(hg.repository(repo.ui,
       
   231                                                             repo.root))
       
   232             else:
       
   233                 raise hg.RepoError(_("There is no Mercurial repository here"
       
   234                                      " (.hg not found)"))
       
   235             return hgwebobj
       
   236 
       
   237     class IPv6HTTPServer(MercurialHTTPServer):
   231     class IPv6HTTPServer(MercurialHTTPServer):
   238         address_family = getattr(socket, 'AF_INET6', None)
   232         address_family = getattr(socket, 'AF_INET6', None)
   239 
   233 
   240         def __init__(self, *args, **kwargs):
   234         def __init__(self, *args, **kwargs):
   241             if self.address_family is None:
   235             if self.address_family is None: