# HG changeset patch # User Wesley J. Landaker # Date 1184270316 21600 # Node ID 8f430b1b3025cbd7735585a3ed3911289654e89f # Parent be591b740e0fc4e6f61be673240f56e3aba4c31b Make hg serve set the wsgi.url_scheme property correctly. This fixes the bug where hg serve with SSL will always detect the wrong urlbase for templates. This is also part of unifying the CGI interface and hg serve interface to both use standard wsgi. diff --git a/mercurial/hgweb/server.py b/mercurial/hgweb/server.py --- a/mercurial/hgweb/server.py +++ b/mercurial/hgweb/server.py @@ -37,6 +37,9 @@ class _error_logger(object): self.handler.log_error("HG error: %s", msg) class _hgwebhandler(object, BaseHTTPServer.BaseHTTPRequestHandler): + + url_scheme = 'http' + def __init__(self, *args, **kargs): self.protocol_version = 'HTTP/1.1' BaseHTTPServer.BaseHTTPRequestHandler.__init__(self, *args, **kargs) @@ -104,7 +107,7 @@ class _hgwebhandler(object, BaseHTTPServ env[hkey] = hval env['SERVER_PROTOCOL'] = self.request_version env['wsgi.version'] = (1, 0) - env['wsgi.url_scheme'] = 'http' + env['wsgi.url_scheme'] = type(self).url_scheme env['wsgi.input'] = self.rfile env['wsgi.errors'] = _error_logger(self) env['wsgi.multithread'] = isinstance(self.server, @@ -168,6 +171,9 @@ class _hgwebhandler(object, BaseHTTPServ self.wfile.flush() class _shgwebhandler(_hgwebhandler): + + url_scheme = 'https' + def setup(self): self.connection = self.request self.rfile = socket._fileobject(self.request, "rb", self.rbufsize)