# HG changeset patch # User Mads Kiilerich # Date 1358208312 -3600 # Node ID 764a758780b66dcff7986de1b4dd6e241b969076 # Parent 853221386f4896842df2f4fdaf19f4fc6849117a hgweb: simplify wsgirequest header handling Remove leaky header abstraction and prepare for other encodings. diff -r 853221386f48 -r 764a758780b6 mercurial/hgweb/request.py --- a/mercurial/hgweb/request.py Tue Jan 15 01:05:12 2013 +0100 +++ b/mercurial/hgweb/request.py Tue Jan 15 01:05:12 2013 +0100 @@ -72,15 +72,21 @@ def respond(self, status, type, filename=None, length=None): if self._start_response is not None: - - self.httphdr(type, filename, length) + self.headers.append(('Content-Type', type)) + if filename: + filename = (filename.split('/')[-1] + .replace('\\', '\\\\').replace('"', '\\"')) + self.headers.append(('Content-Disposition', + 'inline; filename="%s"' % filename)) + if length is not None: + self.headers.append(('Content-Length', str(length))) for k, v in self.headers: if not isinstance(v, str): - raise TypeError('header value must be string: %r' % v) + raise TypeError('header value must be string: %r' % (v,)) if isinstance(status, ErrorResponse): - self.header(status.headers) + self.headers.extend(status.headers) if status.code == HTTP_NOT_MODIFIED: # RFC 2616 Section 10.3.5: 304 Not Modified has cases where # it MUST NOT include any headers other than these and no @@ -120,21 +126,6 @@ def close(self): return None - def header(self, headers=[('Content-Type','text/html')]): - self.headers.extend(headers) - - def httphdr(self, type, filename=None, length=None, headers={}): - headers = headers.items() - headers.append(('Content-Type', type)) - if filename: - filename = (filename.split('/')[-1] - .replace('\\', '\\\\').replace('"', '\\"')) - headers.append(('Content-Disposition', - 'inline; filename="%s"' % filename)) - if length is not None: - headers.append(('Content-Length', str(length))) - self.header(headers) - def wsgiapplication(app_maker): '''For compatibility with old CGI scripts. A plain hgweb() or hgwebdir() can and should now be used as a WSGI application.''' diff -r 853221386f48 -r 764a758780b6 mercurial/hgweb/webcommands.py --- a/mercurial/hgweb/webcommands.py Tue Jan 15 01:05:12 2013 +0100 +++ b/mercurial/hgweb/webcommands.py Tue Jan 15 01:05:12 2013 +0100 @@ -804,7 +804,7 @@ ] if encoding: headers.append(('Content-Encoding', encoding)) - req.header(headers) + req.headers.extend(headers) req.respond(HTTP_OK, mimetype) ctx = webutil.changectx(web.repo, req)