# HG changeset patch
# User Matt Harbison <matt_harbison@yahoo.com>
# Date 2021-03-12 02:07:04
# Node ID 71443f742886c4b4982621c0c169cc1c90db488b
# Parent  ed0899e01628e0f4889dae608a49f6a030584ac0

wireprotoserver: convert ErrorResponse to bytes

Caught by pytype:

     File "/mnt/c/Users/Matt/hg/mercurial/wireprotoserver.py", line 236, in handlewsgirequest: Function _bytestr.__init__ was called with the wrong arguments [wrong-arg-types]
              Expected: (self, ints: Iterable[int])
       Actually passed: (self, ints: mercurial.hgweb.common.ErrorResponse)
       The following methods aren't implemented on mercurial.hgweb.common.ErrorResponse:
       __iter__
     File "/mnt/c/Users/Matt/hg/mercurial/wireprotoserver.py", line 239, in handlewsgirequest: Function _bytestr.__init__ was called with the wrong arguments [wrong-arg-types]
              Expected: (self, ints: Iterable[int])
       Actually passed: (self, ints: mercurial.hgweb.common.ErrorResponse)
       The following methods aren't implemented on mercurial.hgweb.common.ErrorResponse:
       __iter__
     File "/mnt/c/Users/Matt/hg/mercurial/wireprotov2server.py", line 91, in handlehttpv2request: Function _bytestr.__init__ was called with the wrong arguments [wrong-arg-types]
              Expected: (self, ints: Iterable[int])
       Actually passed: (self, ints: mercurial.hgweb.common.ErrorResponse)
       The following methods aren't implemented on mercurial.hgweb.common.ErrorResponse:
       __iter__

Differential Revision: https://phab.mercurial-scm.org/D10182

diff --git a/mercurial/wireprotoserver.py b/mercurial/wireprotoserver.py
--- a/mercurial/wireprotoserver.py
+++ b/mercurial/wireprotoserver.py
@@ -24,6 +24,7 @@ from .interfaces import util as interfac
 from .utils import (
     cborutil,
     compression,
+    stringutil,
 )
 
 stringio = util.stringio
@@ -233,10 +234,12 @@ def handlewsgirequest(rctx, req, res, ch
     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 @@ def handlehttpv2request(rctx, req, res, 
     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')