diff -r 44e75d9fa654 -r dc3504af7722 mercurial/hgweb/server.py --- 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])