mercurial/hgweb/server.py
changeset 6262 de7256c82fad
parent 6217 fe8dbbe9520d
child 6403 f615ece5fec3
equal deleted inserted replaced
6261:7c8101b5ceb1 6262:de7256c82fad
   251                     raise RepoError(_("There is no Mercurial repository here"
   251                     raise RepoError(_("There is no Mercurial repository here"
   252                                       " (.hg not found)"))
   252                                       " (.hg not found)"))
   253                 return hgwebobj
   253                 return hgwebobj
   254             self.application = make_handler()
   254             self.application = make_handler()
   255 
   255 
   256             addr = address
       
   257             if addr in ('', '::'):
       
   258                 addr = socket.gethostname()
       
   259 
       
   260             self.addr, self.port = addr, port
       
   261             self.prefix = prefix
       
   262 
       
   263             if ssl_cert:
   256             if ssl_cert:
   264                 try:
   257                 try:
   265                     from OpenSSL import SSL
   258                     from OpenSSL import SSL
   266                     ctx = SSL.Context(SSL.SSLv23_METHOD)
   259                     ctx = SSL.Context(SSL.SSLv23_METHOD)
   267                 except ImportError:
   260                 except ImportError:
   271                 sock = socket.socket(self.address_family, self.socket_type)
   264                 sock = socket.socket(self.address_family, self.socket_type)
   272                 self.socket = SSL.Connection(ctx, sock)
   265                 self.socket = SSL.Connection(ctx, sock)
   273                 self.server_bind()
   266                 self.server_bind()
   274                 self.server_activate()
   267                 self.server_activate()
   275 
   268 
       
   269             self.addr, self.port = self.socket.getsockname()[0:2]
       
   270             self.prefix = prefix
       
   271 
       
   272             self.fqaddr = socket.getfqdn(address)
       
   273             try:
       
   274                 socket.getaddrbyhost(self.fqaddr)
       
   275             except:
       
   276                 fqaddr = address
       
   277 
   276     class IPv6HTTPServer(MercurialHTTPServer):
   278     class IPv6HTTPServer(MercurialHTTPServer):
   277         address_family = getattr(socket, 'AF_INET6', None)
   279         address_family = getattr(socket, 'AF_INET6', None)
   278 
   280 
   279         def __init__(self, *args, **kwargs):
   281         def __init__(self, *args, **kwargs):
   280             if self.address_family is None:
   282             if self.address_family is None:
   290         if use_ipv6:
   292         if use_ipv6:
   291             return IPv6HTTPServer((address, port), handler)
   293             return IPv6HTTPServer((address, port), handler)
   292         else:
   294         else:
   293             return MercurialHTTPServer((address, port), handler)
   295             return MercurialHTTPServer((address, port), handler)
   294     except socket.error, inst:
   296     except socket.error, inst:
   295         raise util.Abort(_('cannot start server: %s') % inst.args[1])
   297         raise util.Abort(_("cannot start server at '%s:%d': %s")
       
   298                          % (address, port, inst.args[1]))