[PATCH 2 of 7] Make hg serve set the wsgi.url_scheme property correctly

Wesley J. Landaker wjl at icecavern.net
Thu Jul 12 15:48:46 CDT 2007


# HG changeset patch
# User Wesley J. Landaker <wjl at icecavern.net>
# 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 -r be591b740e0f -r 8f430b1b3025 mercurial/hgweb/server.py
--- a/mercurial/hgweb/server.py	Thu Jul 12 13:55:20 2007 -0600
+++ b/mercurial/hgweb/server.py	Thu Jul 12 13:58:36 2007 -0600
@@ -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)


More information about the Mercurial-devel mailing list