Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/hgweb/server.py @ 4245:bd46b83b9692
avoid wsgiapplication <-> MercurialHTTPServer circular reference
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Mon, 19 Mar 2007 19:07:38 -0300 |
parents | 178007785be8 |
children | ca639faa38a2 80d3f6f0d8e5 |
comparison
equal
deleted
inserted
replaced
4244:a80502f47552 | 4245: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: |