diff --git a/mercurial/hgweb/hgweb_mod.py b/mercurial/hgweb/hgweb_mod.py --- a/mercurial/hgweb/hgweb_mod.py +++ b/mercurial/hgweb/hgweb_mod.py @@ -377,7 +377,7 @@ # translate user-visible url structure to internal structure args = query.split('/', 2) - if r'cmd' not in req.form and args and args[0]: + if 'cmd' not in req.form and args and args[0]: cmd = args.pop(0) style = cmd.rfind('-') if style != -1: @@ -386,7 +386,7 @@ # avoid accepting e.g. style parameter as command if util.safehasattr(webcommands, cmd): - req.form[r'cmd'] = [cmd] + req.form['cmd'] = [cmd] if cmd == 'static': req.form['file'] = ['/'.join(args)] @@ -409,7 +409,7 @@ req.form['node'] = [fn[:-len(ext)]] req.form['type'] = [type_] else: - cmd = pycompat.sysbytes(req.form.get(r'cmd', [r''])[0]) + cmd = req.form.get('cmd', [''])[0] # process the web interface request @@ -423,8 +423,8 @@ self.check_perm(rctx, req, None) if cmd == '': - req.form[r'cmd'] = [tmpl.cache['default']] - cmd = req.form[r'cmd'][0] + req.form['cmd'] = [tmpl.cache['default']] + cmd = req.form['cmd'][0] # Don't enable caching if using a CSP nonce because then it wouldn't # be a nonce. @@ -433,7 +433,7 @@ if cmd not in webcommands.__all__: msg = 'no such method: %s' % cmd raise ErrorResponse(HTTP_BAD_REQUEST, msg) - elif cmd == 'file' and r'raw' in req.form.get(r'style', []): + elif cmd == 'file' and 'raw' in req.form.get('style', []): rctx.ctype = ctype content = webcommands.rawfile(rctx, req, tmpl) else: diff --git a/mercurial/hgweb/request.py b/mercurial/hgweb/request.py --- a/mercurial/hgweb/request.py +++ b/mercurial/hgweb/request.py @@ -48,9 +48,11 @@ form[name] = value del form[k] # And strip the values + bytesform = {} for k, v in form.iteritems(): - form[k] = [i.strip() for i in v] - return form + bytesform[pycompat.bytesurl(k)] = [ + pycompat.bytesurl(i.strip()) for i in v] + return bytesform class wsgirequest(object): """Higher-level API for a WSGI request. diff --git a/mercurial/wireprotoserver.py b/mercurial/wireprotoserver.py --- a/mercurial/wireprotoserver.py +++ b/mercurial/wireprotoserver.py @@ -159,10 +159,10 @@ # HTTP version 1 wire protocol requests are denoted by a "cmd" query # string parameter. If it isn't present, this isn't a wire protocol # request. - if r'cmd' not in req.form: + if 'cmd' not in req.form: return None - cmd = pycompat.sysbytes(req.form[r'cmd'][0]) + cmd = req.form['cmd'][0] # The "cmd" request parameter is used by both the wire protocol and hgweb. # While not all wire protocol commands are available for all transports,