Mercurial > public > mercurial-scm > hg
diff mercurial/hgweb.py @ 825:0108c602feb9
Add an option to hg serve to serve file using IPv6
author | Samuel Tardieu <sam@rfc1149.net> |
---|---|
date | Thu, 04 Aug 2005 13:21:27 -0800 |
parents | 8760d0c83b9b |
children | 1fe3b14c7044 |
line wrap: on
line diff
--- a/mercurial/hgweb.py Tue Aug 02 08:57:32 2005 -0800 +++ b/mercurial/hgweb.py Thu Aug 04 13:21:27 2005 -0800 @@ -6,7 +6,7 @@ # This software may be used and distributed according to the terms # of the GNU General Public License, incorporated herein by reference. -import os, cgi, time, re, difflib, sys, zlib +import os, cgi, time, re, difflib, socket, sys, zlib from mercurial.hg import * from mercurial.ui import * @@ -699,11 +699,14 @@ else: write(self.t("error")) -def create_server(path, name, templates, address, port, +def create_server(path, name, templates, address, port, use_ipv6 = False, accesslog = sys.stdout, errorlog = sys.stderr): import BaseHTTPServer + class IPv6HTTPServer(BaseHTTPServer.HTTPServer): + address_family = socket.AF_INET6 + class hgwebhandler(BaseHTTPServer.BaseHTTPRequestHandler): def log_error(self, format, *args): errorlog.write("%s - - [%s] %s\n" % (self.address_string(), @@ -774,10 +777,13 @@ sys.argv, sys.stdin, sys.stdout, sys.stderr = save hg = hgweb(path, name, templates) - return BaseHTTPServer.HTTPServer((address, port), hgwebhandler) + if use_ipv6: + return IPv6HTTPServer((address, port), hgwebhandler) + else: + return BaseHTTPServer.HTTPServer((address, port), hgwebhandler) -def server(path, name, templates, address, port, +def server(path, name, templates, address, port, use_ipv6 = False, accesslog = sys.stdout, errorlog = sys.stderr): - httpd = create_server(path, name, templates, address, port, + httpd = create_server(path, name, templates, address, port, use_ipv6, accesslog, errorlog) httpd.serve_forever()