py3: more robustly cast UUID to bytes
authorGregory Szorc <gregory.szorc@gmail.com>
Sun, 11 Feb 2018 13:23:26 -0800
changeset 36043 223ed0b53f08
parent 36042 4fe2041007ed
child 36044 3b4d14beac3d
py3: more robustly cast UUID to bytes The UUID type only has __str__ implemented. So we need to cast to bytes on Python 3. We need an actual bytes instance here (bytestr won't do) because the re.escape() later iterates over characters and characters need to behave like ints, not bytes instances of length 1. Differential Revision: https://phab.mercurial-scm.org/D2144
mercurial/sshpeer.py
--- a/mercurial/sshpeer.py	Sun Feb 11 13:09:16 2018 -0800
+++ b/mercurial/sshpeer.py	Sun Feb 11 13:23:26 2018 -0800
@@ -220,7 +220,7 @@
 
     # Generate a random token to help identify responses to version 2
     # upgrade request.
-    token = bytes(uuid.uuid4())
+    token = pycompat.sysbytes(str(uuid.uuid4()))
     upgradecaps = [
         ('proto', wireprotoserver.SSHV2),
     ]