Mercurial > public > mercurial-scm > hg-stable
diff mercurial/hgweb/server.py @ 3628: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 |
line wrap: on
line diff
--- a/mercurial/hgweb/server.py Mon Nov 13 13:26:57 2006 -0600 +++ b/mercurial/hgweb/server.py Mon Nov 13 13:26:57 2006 -0600 @@ -200,6 +200,16 @@ self.reqmaker = wsgiapplication(self.make_handler) self.daemon_threads = True + addr, port = self.socket.getsockname() + if addr == '0.0.0.0': + addr = socket.gethostname() + else: + try: + addr = socket.gethostbyaddr(addr)[0] + except socket.error: + pass + self.addr, self.port = addr, port + def make_handler(self): if self.webdir_conf: hgwebobj = self.webdirmaker(self.webdir_conf) @@ -219,7 +229,10 @@ raise hg.RepoError(_('IPv6 not available on this system')) super(IPv6HTTPServer, self).__init__(*args, **kwargs) - if use_ipv6: - return IPv6HTTPServer((address, port), _hgwebhandler) - else: - return MercurialHTTPServer((address, port), _hgwebhandler) + try: + if use_ipv6: + return IPv6HTTPServer((address, port), _hgwebhandler) + else: + return MercurialHTTPServer((address, port), _hgwebhandler) + except socket.error, inst: + raise util.Abort(_('cannot start server: %s') % inst.args[1])