diff --git a/mercurial/wireprotoserver.py b/mercurial/wireprotoserver.py --- a/mercurial/wireprotoserver.py +++ b/mercurial/wireprotoserver.py @@ -24,6 +24,7 @@ from .utils import ( cborutil, compression, + stringutil, ) stringio = util.stringio @@ -233,10 +234,12 @@ except hgwebcommon.ErrorResponse as e: for k, v in e.headers: res.headers[k] = v - res.status = hgwebcommon.statusmessage(e.code, pycompat.bytestr(e)) + res.status = hgwebcommon.statusmessage( + e.code, stringutil.forcebytestr(e) + ) # TODO This response body assumes the failed command was # "unbundle." That assumption is not always valid. - res.setbodybytes(b'0\n%s\n' % pycompat.bytestr(e)) + res.setbodybytes(b'0\n%s\n' % stringutil.forcebytestr(e)) return True diff --git a/mercurial/wireprotov2server.py b/mercurial/wireprotov2server.py --- a/mercurial/wireprotov2server.py +++ b/mercurial/wireprotov2server.py @@ -88,7 +88,9 @@ try: checkperm(rctx, req, b'pull' if permission == b'ro' else b'push') except hgwebcommon.ErrorResponse as e: - res.status = hgwebcommon.statusmessage(e.code, pycompat.bytestr(e)) + res.status = hgwebcommon.statusmessage( + e.code, stringutil.forcebytestr(e) + ) for k, v in e.headers: res.headers[k] = v res.setbodybytes(b'permission denied')