py3: more robustly cast UUID to bytes
authorGregory Szorc <gregory.szorc@gmail.com>
Sun, 11 Feb 2018 13:23:26 -0800
changeset 36081 223ed0b53f08
parent 36080 4fe2041007ed
child 36082 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),
     ]