equal
deleted
inserted
replaced
889 else: |
889 else: |
890 req.write(self.t("error")) |
890 req.write(self.t("error")) |
891 |
891 |
892 def create_server(repo): |
892 def create_server(repo): |
893 use_threads = True |
893 use_threads = True |
894 |
894 |
895 def openlog(opt, default): |
895 def openlog(opt, default): |
896 if opt and opt != '-': |
896 if opt and opt != '-': |
897 return open(opt, 'w') |
897 return open(opt, 'w') |
898 return default |
898 return default |
899 |
899 |
901 port = int(repo.ui.config("web", "port", 8000)) |
901 port = int(repo.ui.config("web", "port", 8000)) |
902 use_ipv6 = repo.ui.configbool("web", "ipv6") |
902 use_ipv6 = repo.ui.configbool("web", "ipv6") |
903 webdir_conf = repo.ui.config("web", "webdir_conf") |
903 webdir_conf = repo.ui.config("web", "webdir_conf") |
904 accesslog = openlog(repo.ui.config("web", "accesslog", "-"), sys.stdout) |
904 accesslog = openlog(repo.ui.config("web", "accesslog", "-"), sys.stdout) |
905 errorlog = openlog(repo.ui.config("web", "errorlog", "-"), sys.stderr) |
905 errorlog = openlog(repo.ui.config("web", "errorlog", "-"), sys.stderr) |
906 |
906 |
907 if use_threads: |
907 if use_threads: |
908 try: |
908 try: |
909 from threading import activeCount |
909 from threading import activeCount |
910 except ImportError: |
910 except ImportError: |
911 use_threads = False |
911 use_threads = False |
918 else: |
918 else: |
919 class _mixin: pass |
919 class _mixin: pass |
920 |
920 |
921 class MercurialHTTPServer(_mixin, BaseHTTPServer.HTTPServer): |
921 class MercurialHTTPServer(_mixin, BaseHTTPServer.HTTPServer): |
922 pass |
922 pass |
923 |
923 |
924 class IPv6HTTPServer(MercurialHTTPServer): |
924 class IPv6HTTPServer(MercurialHTTPServer): |
925 address_family = getattr(socket, 'AF_INET6', None) |
925 address_family = getattr(socket, 'AF_INET6', None) |
926 |
926 |
927 def __init__(self, *args, **kwargs): |
927 def __init__(self, *args, **kwargs): |
928 if self.address_family is None: |
928 if self.address_family is None: |
951 def do_GET(self): |
951 def do_GET(self): |
952 self.do_POST() |
952 self.do_POST() |
953 |
953 |
954 def do_hgweb(self): |
954 def do_hgweb(self): |
955 path_info, query = splitURI(self.path) |
955 path_info, query = splitURI(self.path) |
956 |
956 |
957 env = {} |
957 env = {} |
958 env['GATEWAY_INTERFACE'] = 'CGI/1.1' |
958 env['GATEWAY_INTERFACE'] = 'CGI/1.1' |
959 env['REQUEST_METHOD'] = self.command |
959 env['REQUEST_METHOD'] = self.command |
960 env['SERVER_NAME'] = self.server.server_name |
960 env['SERVER_NAME'] = self.server.server_name |
961 env['SERVER_PORT'] = str(self.server.server_port) |
961 env['SERVER_PORT'] = str(self.server.server_port) |
989 if webdir_conf: |
989 if webdir_conf: |
990 hgwebobj = hgwebdir(webdir_conf) |
990 hgwebobj = hgwebdir(webdir_conf) |
991 else: |
991 else: |
992 hgwebobj = hgweb(repo.__class__(repo.ui, repo.origroot)) |
992 hgwebobj = hgweb(repo.__class__(repo.ui, repo.origroot)) |
993 hgwebobj.run(req) |
993 hgwebobj.run(req) |
994 |
994 |
995 |
995 |
996 if use_ipv6: |
996 if use_ipv6: |
997 return IPv6HTTPServer((address, port), hgwebhandler) |
997 return IPv6HTTPServer((address, port), hgwebhandler) |
998 else: |
998 else: |
999 return MercurialHTTPServer((address, port), hgwebhandler) |
999 return MercurialHTTPServer((address, port), hgwebhandler) |