diff -r 2372284d9457 -r 687b865b95ad mercurial/hgweb/wsgiheaders.py --- a/mercurial/hgweb/wsgiheaders.py Sun Oct 06 09:45:02 2019 -0400 +++ b/mercurial/hgweb/wsgiheaders.py Sun Oct 06 09:48:39 2019 -0400 @@ -22,10 +22,10 @@ """ if value is not None and len(value) > 0: if quote or tspecials.search(value): - value = value.replace('\\', '\\\\').replace('"', r'\"') - return '%s="%s"' % (param, value) + value = value.replace(b'\\', b'\\\\').replace(b'"', r'\"') + return b'%s="%s"' % (param, value) else: - return '%s=%s' % (param, value) + return b'%s=%s' % (param, value) else: return param @@ -36,7 +36,7 @@ def __init__(self, headers=None): headers = headers if headers is not None else [] if type(headers) is not list: - raise TypeError("Headers must be a list of name/value tuples") + raise TypeError(b"Headers must be a list of name/value tuples") self._headers = headers if __debug__: for k, v in headers: @@ -134,7 +134,9 @@ def __str__(self): """str() returns the formatted headers, complete with end line, suitable for direct HTTP transmission.""" - return '\r\n'.join(["%s: %s" % kv for kv in self._headers] + ['', '']) + return b'\r\n'.join( + [b"%s: %s" % kv for kv in self._headers] + [b'', b''] + ) def __bytes__(self): return str(self).encode('iso-8859-1') @@ -174,10 +176,10 @@ for k, v in _params.items(): k = self._convert_string_type(k) if v is None: - parts.append(k.replace('_', '-')) + parts.append(k.replace(b'_', b'-')) else: v = self._convert_string_type(v) - parts.append(_formatparam(k.replace('_', '-'), v)) + parts.append(_formatparam(k.replace(b'_', b'-'), v)) self._headers.append( - (self._convert_string_type(_name), "; ".join(parts)) + (self._convert_string_type(_name), b"; ".join(parts)) )