Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/hgweb/server.py @ 4870:8f430b1b3025
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.
author | Wesley J. Landaker <wjl@icecavern.net> |
---|---|
date | Thu, 12 Jul 2007 13:58:36 -0600 |
parents | 192cd95c2ba8 |
children | d787d9ad67cc |
comparison
equal
deleted
inserted
replaced
4869:be591b740e0f | 4870:8f430b1b3025 |
---|---|
35 def writelines(self, seq): | 35 def writelines(self, seq): |
36 for msg in seq: | 36 for msg in seq: |
37 self.handler.log_error("HG error: %s", msg) | 37 self.handler.log_error("HG error: %s", msg) |
38 | 38 |
39 class _hgwebhandler(object, BaseHTTPServer.BaseHTTPRequestHandler): | 39 class _hgwebhandler(object, BaseHTTPServer.BaseHTTPRequestHandler): |
40 | |
41 url_scheme = 'http' | |
42 | |
40 def __init__(self, *args, **kargs): | 43 def __init__(self, *args, **kargs): |
41 self.protocol_version = 'HTTP/1.1' | 44 self.protocol_version = 'HTTP/1.1' |
42 BaseHTTPServer.BaseHTTPRequestHandler.__init__(self, *args, **kargs) | 45 BaseHTTPServer.BaseHTTPRequestHandler.__init__(self, *args, **kargs) |
43 | 46 |
44 def log_error(self, format, *args): | 47 def log_error(self, format, *args): |
102 hval = hval.replace('\n', '').strip() | 105 hval = hval.replace('\n', '').strip() |
103 if hval: | 106 if hval: |
104 env[hkey] = hval | 107 env[hkey] = hval |
105 env['SERVER_PROTOCOL'] = self.request_version | 108 env['SERVER_PROTOCOL'] = self.request_version |
106 env['wsgi.version'] = (1, 0) | 109 env['wsgi.version'] = (1, 0) |
107 env['wsgi.url_scheme'] = 'http' | 110 env['wsgi.url_scheme'] = type(self).url_scheme |
108 env['wsgi.input'] = self.rfile | 111 env['wsgi.input'] = self.rfile |
109 env['wsgi.errors'] = _error_logger(self) | 112 env['wsgi.errors'] = _error_logger(self) |
110 env['wsgi.multithread'] = isinstance(self.server, | 113 env['wsgi.multithread'] = isinstance(self.server, |
111 SocketServer.ThreadingMixIn) | 114 SocketServer.ThreadingMixIn) |
112 env['wsgi.multiprocess'] = isinstance(self.server, | 115 env['wsgi.multiprocess'] = isinstance(self.server, |
166 self.length = self.length - len(data) | 169 self.length = self.length - len(data) |
167 self.wfile.write(data) | 170 self.wfile.write(data) |
168 self.wfile.flush() | 171 self.wfile.flush() |
169 | 172 |
170 class _shgwebhandler(_hgwebhandler): | 173 class _shgwebhandler(_hgwebhandler): |
174 | |
175 url_scheme = 'https' | |
176 | |
171 def setup(self): | 177 def setup(self): |
172 self.connection = self.request | 178 self.connection = self.request |
173 self.rfile = socket._fileobject(self.request, "rb", self.rbufsize) | 179 self.rfile = socket._fileobject(self.request, "rb", self.rbufsize) |
174 self.wfile = socket._fileobject(self.request, "wb", self.wbufsize) | 180 self.wfile = socket._fileobject(self.request, "wb", self.wbufsize) |
175 | 181 |