comparison mercurial/hgweb/server.py @ 3631:dc3504af7722

hgweb: internalize some socket details
author Matt Mackall <mpm@selenic.com>
date Mon, 13 Nov 2006 13:26:57 -0600
parents 3207e30bf468
children eb0b4a2d70a9
comparison
equal deleted inserted replaced
3630:44e75d9fa654 3631:dc3504af7722
198 self.webdirmaker = hgwebdir 198 self.webdirmaker = hgwebdir
199 self.repoviewmaker = hgweb 199 self.repoviewmaker = hgweb
200 self.reqmaker = wsgiapplication(self.make_handler) 200 self.reqmaker = wsgiapplication(self.make_handler)
201 self.daemon_threads = True 201 self.daemon_threads = True
202 202
203 addr, port = self.socket.getsockname()
204 if addr == '0.0.0.0':
205 addr = socket.gethostname()
206 else:
207 try:
208 addr = socket.gethostbyaddr(addr)[0]
209 except socket.error:
210 pass
211 self.addr, self.port = addr, port
212
203 def make_handler(self): 213 def make_handler(self):
204 if self.webdir_conf: 214 if self.webdir_conf:
205 hgwebobj = self.webdirmaker(self.webdir_conf) 215 hgwebobj = self.webdirmaker(self.webdir_conf)
206 elif self.repo is not None: 216 elif self.repo is not None:
207 hgwebobj = self.repoviewmaker(repo.__class__(repo.ui, 217 hgwebobj = self.repoviewmaker(repo.__class__(repo.ui,
217 def __init__(self, *args, **kwargs): 227 def __init__(self, *args, **kwargs):
218 if self.address_family is None: 228 if self.address_family is None:
219 raise hg.RepoError(_('IPv6 not available on this system')) 229 raise hg.RepoError(_('IPv6 not available on this system'))
220 super(IPv6HTTPServer, self).__init__(*args, **kwargs) 230 super(IPv6HTTPServer, self).__init__(*args, **kwargs)
221 231
222 if use_ipv6: 232 try:
223 return IPv6HTTPServer((address, port), _hgwebhandler) 233 if use_ipv6:
224 else: 234 return IPv6HTTPServer((address, port), _hgwebhandler)
225 return MercurialHTTPServer((address, port), _hgwebhandler) 235 else:
236 return MercurialHTTPServer((address, port), _hgwebhandler)
237 except socket.error, inst:
238 raise util.Abort(_('cannot start server: %s') % inst.args[1])